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.
- package/README.md +123 -101
- package/android/build.gradle +13 -1
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +904 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.kt +17 -0
- package/dist/commonjs/components/ConsoleLogCard.js +57 -56
- package/dist/commonjs/components/CopyButton.js +10 -1
- package/dist/commonjs/components/ErrorBoundary.js +3 -0
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +7 -3
- package/dist/commonjs/components/Inspector/BundleTab.js +20 -20
- package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -1
- package/dist/commonjs/components/Inspector/CrashDetail.js +16 -12
- package/dist/commonjs/components/Inspector/CrashTab.js +97 -90
- package/dist/commonjs/components/Inspector/InspectorHeader.js +28 -24
- package/dist/commonjs/components/Inspector/MainScreen.js +20 -103
- package/dist/commonjs/components/Inspector/NetworkTab.js +143 -10
- package/dist/commonjs/components/Inspector/PerformanceTab.js +96 -3
- package/dist/commonjs/components/Inspector/ReduxDetail.js +24 -19
- package/dist/commonjs/components/Inspector/ReduxTab.js +30 -18
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1578 -754
- package/dist/commonjs/components/Inspector/TabBar.js +6 -3
- package/dist/commonjs/components/LogCard.js +27 -9
- package/dist/commonjs/components/MetaAccordion.js +42 -0
- package/dist/commonjs/components/NetworkIcons.d.ts +10 -0
- package/dist/commonjs/components/NetworkIcons.js +53 -1
- package/dist/commonjs/components/Toast.js +3 -3
- package/dist/commonjs/components/TouchableScale.d.ts +5 -2
- package/dist/commonjs/components/TouchableScale.js +30 -32
- package/dist/commonjs/constants/index.d.ts +1 -2
- package/dist/commonjs/constants/index.js +4 -0
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/analyticsLogger.d.ts +6 -0
- package/dist/commonjs/customHooks/analyticsLogger.js +16 -5
- package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +2 -0
- package/dist/commonjs/customHooks/bundleAnalyzer.js +26 -17
- package/dist/commonjs/customHooks/consoleLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/consoleLogger.js +10 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +2 -0
- package/dist/commonjs/customHooks/crashHandler.js +17 -1
- package/dist/commonjs/customHooks/networkLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/networkLogger.js +12 -1
- package/dist/commonjs/customHooks/performanceTracker.d.ts +3 -1
- package/dist/commonjs/customHooks/performanceTracker.js +18 -4
- package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -0
- package/dist/commonjs/customHooks/reduxLogger.js +10 -1
- package/dist/commonjs/helpers/index.js +10 -1
- package/dist/commonjs/helpers/settingsStore.d.ts +9 -0
- package/dist/commonjs/helpers/settingsStore.js +59 -3
- package/dist/commonjs/i18n/locales/en.json +96 -28
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +307 -73
- package/dist/commonjs/native/NativeInspector.d.ts +125 -0
- package/dist/commonjs/native/NativeInspector.js +313 -0
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +22 -0
- package/dist/commonjs/native/NativeNetworkInspector.js +4 -0
- package/dist/commonjs/styles/AppColors.d.ts +28 -0
- package/dist/commonjs/styles/AppColors.js +30 -0
- package/dist/commonjs/styles/index.js +6 -6
- package/dist/commonjs/types/enums.d.ts +1 -1
- package/dist/commonjs/types/interfaces.d.ts +9 -0
- package/dist/esm/components/ConsoleLogCard.js +58 -57
- package/dist/esm/components/CopyButton.js +10 -1
- package/dist/esm/components/ErrorBoundary.js +3 -0
- package/dist/esm/components/Inspector/AnalyticsTab.js +7 -3
- package/dist/esm/components/Inspector/BundleTab.js +20 -20
- package/dist/esm/components/Inspector/ConsoleTab.js +1 -1
- package/dist/esm/components/Inspector/CrashDetail.js +16 -12
- package/dist/esm/components/Inspector/CrashTab.js +97 -90
- package/dist/esm/components/Inspector/InspectorHeader.js +29 -25
- package/dist/esm/components/Inspector/MainScreen.js +21 -71
- package/dist/esm/components/Inspector/NetworkTab.js +145 -12
- package/dist/esm/components/Inspector/PerformanceTab.js +96 -3
- package/dist/esm/components/Inspector/ReduxDetail.js +24 -19
- package/dist/esm/components/Inspector/ReduxTab.js +30 -18
- package/dist/esm/components/Inspector/SettingsPanel.js +1582 -758
- package/dist/esm/components/Inspector/TabBar.js +7 -4
- package/dist/esm/components/LogCard.js +27 -9
- package/dist/esm/components/MetaAccordion.js +42 -0
- package/dist/esm/components/NetworkIcons.d.ts +10 -0
- package/dist/esm/components/NetworkIcons.js +42 -0
- package/dist/esm/components/Toast.js +3 -3
- package/dist/esm/components/TouchableScale.d.ts +5 -2
- package/dist/esm/components/TouchableScale.js +31 -33
- package/dist/esm/constants/index.d.ts +1 -2
- package/dist/esm/constants/index.js +4 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/analyticsLogger.d.ts +6 -0
- package/dist/esm/customHooks/analyticsLogger.js +12 -4
- package/dist/esm/customHooks/bundleAnalyzer.d.ts +2 -0
- package/dist/esm/customHooks/bundleAnalyzer.js +23 -16
- package/dist/esm/customHooks/consoleLogger.d.ts +2 -0
- package/dist/esm/customHooks/consoleLogger.js +7 -0
- package/dist/esm/customHooks/crashHandler.d.ts +2 -0
- package/dist/esm/customHooks/crashHandler.js +14 -0
- package/dist/esm/customHooks/networkLogger.d.ts +2 -0
- package/dist/esm/customHooks/networkLogger.js +9 -0
- package/dist/esm/customHooks/performanceTracker.d.ts +3 -1
- package/dist/esm/customHooks/performanceTracker.js +15 -3
- package/dist/esm/customHooks/reduxLogger.d.ts +2 -0
- package/dist/esm/customHooks/reduxLogger.js +7 -0
- package/dist/esm/helpers/index.js +10 -1
- package/dist/esm/helpers/settingsStore.d.ts +9 -0
- package/dist/esm/helpers/settingsStore.js +58 -3
- package/dist/esm/i18n/locales/en.json +96 -28
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +279 -59
- package/dist/esm/native/NativeInspector.d.ts +125 -0
- package/dist/esm/native/NativeInspector.js +289 -0
- package/dist/esm/native/NativeNetworkInspector.d.ts +22 -0
- package/dist/esm/native/NativeNetworkInspector.js +2 -0
- package/dist/esm/styles/AppColors.d.ts +28 -0
- package/dist/esm/styles/AppColors.js +30 -0
- package/dist/esm/styles/index.js +6 -6
- package/dist/esm/types/enums.d.ts +1 -1
- package/dist/esm/types/interfaces.d.ts +9 -0
- package/ios/NetworkInspectorModule.h +6 -0
- package/ios/NetworkInspectorModule.m +720 -5
- package/package.json +15 -3
- package/react-native-inapp-inspector.podspec +7 -2
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +0 -97
- package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.java +0 -28
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setupGlobalCrashHandler = exports.exportCrashReport = exports.simulateTestCrash = exports.recordCustomCrash = exports.handleInterceptedCrash = exports.emitCrashEvent = exports.subscribeCrashEvents = exports.clearCrashRecords = exports.getCrashRecords = exports.computeCrashFingerprint = exports.parseCrashStackTrace = exports.getCrashBreadcrumbs = exports.clearCrashBreadcrumbs = exports.recordUserActionBreadcrumb = exports.recordReduxBreadcrumb = exports.recordNetworkBreadcrumb = exports.recordNavigationBreadcrumb = exports.addCrashBreadcrumb = exports.setMaxCrashLogsLimit = exports.CrashExportFormat = void 0;
|
|
3
|
+
exports.setupGlobalCrashHandler = exports.exportCrashReport = exports.simulateTestCrash = exports.recordCustomCrash = exports.handleInterceptedCrash = exports.emitCrashEvent = exports.subscribeCrashEvents = exports.clearCrashRecords = exports.getCrashRecords = exports.computeCrashFingerprint = exports.parseCrashStackTrace = exports.getCrashBreadcrumbs = exports.clearCrashBreadcrumbs = exports.recordUserActionBreadcrumb = exports.recordReduxBreadcrumb = exports.recordNetworkBreadcrumb = exports.recordNavigationBreadcrumb = exports.addCrashBreadcrumb = exports.setMaxCrashLogsLimit = exports.getCrashModuleEnabled = exports.setCrashModuleEnabled = exports.CrashExportFormat = void 0;
|
|
4
4
|
const react_native_1 = require("react-native");
|
|
5
5
|
const enums_1 = require("../types/enums");
|
|
6
6
|
Object.defineProperty(exports, "CrashExportFormat", { enumerable: true, get: function () { return enums_1.CrashExportFormat; } });
|
|
7
7
|
const consoleLogger_1 = require("./consoleLogger");
|
|
8
|
+
const NativeInspector_1 = require("../native/NativeInspector");
|
|
8
9
|
const i18n_1 = require("../i18n");
|
|
9
10
|
let crashListeners = [];
|
|
10
11
|
let isCrashHandlerInitialized = false;
|
|
@@ -14,6 +15,13 @@ let breadcrumbsStore = [];
|
|
|
14
15
|
const MAX_BREADCRUMBS = 50;
|
|
15
16
|
let maxStoredCrashes = 100;
|
|
16
17
|
const appStartTime = Date.now();
|
|
18
|
+
let isCrashModuleEnabled = false;
|
|
19
|
+
const setCrashModuleEnabled = (enabled) => {
|
|
20
|
+
isCrashModuleEnabled = enabled;
|
|
21
|
+
};
|
|
22
|
+
exports.setCrashModuleEnabled = setCrashModuleEnabled;
|
|
23
|
+
const getCrashModuleEnabled = () => isCrashModuleEnabled;
|
|
24
|
+
exports.getCrashModuleEnabled = getCrashModuleEnabled;
|
|
17
25
|
// ─── BREADCRUMB MANAGERS ───────────────────────────────────────────────────────
|
|
18
26
|
const setMaxCrashLogsLimit = (max) => {
|
|
19
27
|
maxStoredCrashes = Math.max(10, max);
|
|
@@ -23,6 +31,8 @@ const setMaxCrashLogsLimit = (max) => {
|
|
|
23
31
|
};
|
|
24
32
|
exports.setMaxCrashLogsLimit = setMaxCrashLogsLimit;
|
|
25
33
|
const addCrashBreadcrumb = (type, message, data) => {
|
|
34
|
+
if (!isCrashModuleEnabled)
|
|
35
|
+
return;
|
|
26
36
|
try {
|
|
27
37
|
const entry = {
|
|
28
38
|
type,
|
|
@@ -375,6 +385,12 @@ const handleInterceptedCrash = (errorOrTitle, rawStack, isFatal = false, customT
|
|
|
375
385
|
logId: log?.id,
|
|
376
386
|
crashRecord,
|
|
377
387
|
});
|
|
388
|
+
// Ensure native floating icon is visible & badged even if React UI is broken
|
|
389
|
+
try {
|
|
390
|
+
(0, NativeInspector_1.showNativeFloatingButton)();
|
|
391
|
+
(0, NativeInspector_1.setNativeFloatingButtonBadge)(true);
|
|
392
|
+
}
|
|
393
|
+
catch { }
|
|
378
394
|
return crashRecord;
|
|
379
395
|
}
|
|
380
396
|
catch (err) {
|
|
@@ -12,6 +12,8 @@ type NetworkLog = {
|
|
|
12
12
|
requestHeaders?: Record<string, string>;
|
|
13
13
|
responseHeaders?: Record<string, string>;
|
|
14
14
|
};
|
|
15
|
+
export declare const setNetworkModuleEnabled: (enabled: boolean) => void;
|
|
16
|
+
export declare const getNetworkModuleEnabled: () => boolean;
|
|
15
17
|
export declare const subscribeNetworkLogs: (callback: (logs: NetworkLog[]) => void) => () => void;
|
|
16
18
|
export declare const clearNetworkLogs: () => void;
|
|
17
19
|
export declare const getNetworkLogs: () => NetworkLog[];
|
|
@@ -3,12 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.addAxiosInterceptors = exports.setupNetworkLogger = exports.getNetworkLogs = exports.clearNetworkLogs = exports.subscribeNetworkLogs = void 0;
|
|
6
|
+
exports.addAxiosInterceptors = exports.setupNetworkLogger = exports.getNetworkLogs = exports.clearNetworkLogs = exports.subscribeNetworkLogs = exports.getNetworkModuleEnabled = exports.setNetworkModuleEnabled = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const crashHandler_1 = require("./crashHandler");
|
|
9
9
|
let logs = [];
|
|
10
10
|
let listeners = [];
|
|
11
11
|
let counter = 0;
|
|
12
|
+
let isNetworkModuleEnabled = true;
|
|
13
|
+
const setNetworkModuleEnabled = (enabled) => {
|
|
14
|
+
isNetworkModuleEnabled = enabled;
|
|
15
|
+
};
|
|
16
|
+
exports.setNetworkModuleEnabled = setNetworkModuleEnabled;
|
|
17
|
+
const getNetworkModuleEnabled = () => isNetworkModuleEnabled;
|
|
18
|
+
exports.getNetworkModuleEnabled = getNetworkModuleEnabled;
|
|
12
19
|
const ALLOWED_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"];
|
|
13
20
|
const IGNORED_URL_PATTERNS = [
|
|
14
21
|
/\/symbolicate(?:[/?#]|$)/i,
|
|
@@ -121,6 +128,8 @@ const notify = () => {
|
|
|
121
128
|
listeners.forEach((cb) => cb(snapshot));
|
|
122
129
|
};
|
|
123
130
|
const addOrUpdateLog = (log) => {
|
|
131
|
+
if (!isNetworkModuleEnabled)
|
|
132
|
+
return;
|
|
124
133
|
const method = log.method?.toUpperCase();
|
|
125
134
|
if (!ALLOWED_METHODS.includes(method))
|
|
126
135
|
return;
|
|
@@ -144,6 +153,8 @@ const setupNetworkLogger = () => {
|
|
|
144
153
|
const originalFetch = globalThis.fetch;
|
|
145
154
|
if (originalFetch) {
|
|
146
155
|
globalThis.fetch = async (url, options = {}) => {
|
|
156
|
+
if (!isNetworkModuleEnabled)
|
|
157
|
+
return originalFetch(url, options);
|
|
147
158
|
const method = (options?.method || "GET").toUpperCase();
|
|
148
159
|
if (!ALLOWED_METHODS.includes(method))
|
|
149
160
|
return originalFetch(url, options);
|
|
@@ -77,6 +77,8 @@ export declare function getCallerSourceFile(fallbackName?: string): string;
|
|
|
77
77
|
export declare const getInitialRenderProfiles: () => ComponentRenderProfile[];
|
|
78
78
|
export declare const getInitialPerformanceEvents: () => PerformanceEvent[];
|
|
79
79
|
export declare const INITIAL_EVENTS: PerformanceEvent[];
|
|
80
|
+
export declare const setPerformanceModuleEnabled: (enabled: boolean) => void;
|
|
81
|
+
export declare const getPerformanceModuleEnabled: () => boolean;
|
|
80
82
|
export declare const subscribeRenderProfiles: (listener: (profiles: ComponentRenderProfile[]) => void) => () => void;
|
|
81
83
|
export declare const getRenderProfiles: () => ComponentRenderProfile[];
|
|
82
84
|
export declare const registerComponentProfile: (profile: ComponentRenderProfile) => void;
|
|
@@ -129,7 +131,7 @@ export declare const useComponentProfiler: (componentName: string, options?: {
|
|
|
129
131
|
sourceFile?: string;
|
|
130
132
|
propsToCompare?: Record<string, any>;
|
|
131
133
|
}) => void;
|
|
132
|
-
export declare const usePerformanceTracker: () => {
|
|
134
|
+
export declare const usePerformanceTracker: (enabled?: boolean) => {
|
|
133
135
|
isRecording: boolean;
|
|
134
136
|
setIsRecording: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
135
137
|
currentFps: number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.usePerformanceTracker = exports.useComponentProfiler = exports.measureAsync = exports.trackHeavyTask = exports.useNavigationProfiler = exports.trackNavigationTransition = exports.getHermesMemoryStats = exports.trackComponentRender = exports.registerComponentProfile = exports.getRenderProfiles = exports.subscribeRenderProfiles = exports.INITIAL_EVENTS = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.generateFixSnippet = void 0;
|
|
3
|
+
exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.usePerformanceTracker = exports.useComponentProfiler = exports.measureAsync = exports.trackHeavyTask = exports.useNavigationProfiler = exports.trackNavigationTransition = exports.getHermesMemoryStats = exports.trackComponentRender = exports.registerComponentProfile = exports.getRenderProfiles = exports.subscribeRenderProfiles = exports.getPerformanceModuleEnabled = exports.setPerformanceModuleEnabled = exports.INITIAL_EVENTS = exports.getInitialPerformanceEvents = exports.getInitialRenderProfiles = exports.generateFixSnippet = void 0;
|
|
4
4
|
exports.getCallerSourceFile = getCallerSourceFile;
|
|
5
5
|
const AppColors_1 = require("../styles/AppColors");
|
|
6
6
|
const i18n_1 = require("../i18n");
|
|
@@ -177,6 +177,13 @@ exports.getInitialRenderProfiles = getInitialRenderProfiles;
|
|
|
177
177
|
const getInitialPerformanceEvents = () => [];
|
|
178
178
|
exports.getInitialPerformanceEvents = getInitialPerformanceEvents;
|
|
179
179
|
exports.INITIAL_EVENTS = [];
|
|
180
|
+
let isPerformanceModuleEnabled = false;
|
|
181
|
+
const setPerformanceModuleEnabled = (enabled) => {
|
|
182
|
+
isPerformanceModuleEnabled = enabled;
|
|
183
|
+
};
|
|
184
|
+
exports.setPerformanceModuleEnabled = setPerformanceModuleEnabled;
|
|
185
|
+
const getPerformanceModuleEnabled = () => isPerformanceModuleEnabled;
|
|
186
|
+
exports.getPerformanceModuleEnabled = getPerformanceModuleEnabled;
|
|
180
187
|
const globalRenderRegistry = new Map();
|
|
181
188
|
const renderListeners = new Set();
|
|
182
189
|
const notifyRenderListeners = () => {
|
|
@@ -199,11 +206,15 @@ exports.subscribeRenderProfiles = subscribeRenderProfiles;
|
|
|
199
206
|
const getRenderProfiles = () => Array.from(globalRenderRegistry.values());
|
|
200
207
|
exports.getRenderProfiles = getRenderProfiles;
|
|
201
208
|
const registerComponentProfile = (profile) => {
|
|
209
|
+
if (!isPerformanceModuleEnabled)
|
|
210
|
+
return;
|
|
202
211
|
globalRenderRegistry.set(profile.name, profile);
|
|
203
212
|
notifyRenderListeners();
|
|
204
213
|
};
|
|
205
214
|
exports.registerComponentProfile = registerComponentProfile;
|
|
206
215
|
const trackComponentRender = (params) => {
|
|
216
|
+
if (!isPerformanceModuleEnabled)
|
|
217
|
+
return;
|
|
207
218
|
const existing = globalRenderRegistry.get(params.name);
|
|
208
219
|
const now = Date.now();
|
|
209
220
|
const renderTimeMs = params.renderTimeMs ?? 1.5;
|
|
@@ -451,7 +462,8 @@ const useComponentProfiler = (componentName, options) => {
|
|
|
451
462
|
});
|
|
452
463
|
};
|
|
453
464
|
exports.useComponentProfiler = useComponentProfiler;
|
|
454
|
-
const usePerformanceTracker = () => {
|
|
465
|
+
const usePerformanceTracker = (enabled = true) => {
|
|
466
|
+
const isTrackerActive = enabled && isPerformanceModuleEnabled;
|
|
455
467
|
const [isRecording, setIsRecording] = (0, react_1.useState)(true);
|
|
456
468
|
const [currentFps, setCurrentFps] = (0, react_1.useState)(60);
|
|
457
469
|
const [minFps, setMinFps] = (0, react_1.useState)(60);
|
|
@@ -465,6 +477,8 @@ const usePerformanceTracker = () => {
|
|
|
465
477
|
const [renderProfiles, setRenderProfiles] = (0, react_1.useState)(() => (0, exports.getRenderProfiles)());
|
|
466
478
|
const [events, setEvents] = (0, react_1.useState)(() => (0, exports.getPerformanceEvents)());
|
|
467
479
|
(0, react_1.useEffect)(() => {
|
|
480
|
+
if (!isTrackerActive)
|
|
481
|
+
return;
|
|
468
482
|
const unsubRender = (0, exports.subscribeRenderProfiles)(profiles => {
|
|
469
483
|
setRenderProfiles(profiles);
|
|
470
484
|
});
|
|
@@ -475,13 +489,13 @@ const usePerformanceTracker = () => {
|
|
|
475
489
|
unsubRender();
|
|
476
490
|
unsubEvents();
|
|
477
491
|
};
|
|
478
|
-
}, []);
|
|
492
|
+
}, [isTrackerActive]);
|
|
479
493
|
const lastFrameTimeRef = (0, react_1.useRef)(Date.now());
|
|
480
494
|
const rafIdRef = (0, react_1.useRef)(null);
|
|
481
495
|
const appStartTimestampRef = (0, react_1.useRef)(Date.now());
|
|
482
496
|
// Live Frame Measurement Loop
|
|
483
497
|
(0, react_1.useEffect)(() => {
|
|
484
|
-
if (!isRecording)
|
|
498
|
+
if (!isTrackerActive || !isRecording)
|
|
485
499
|
return;
|
|
486
500
|
let isMounted = true;
|
|
487
501
|
let frameCount = 0;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ReduxHistoryEntry } from '../types';
|
|
2
2
|
export { ReduxHistoryEntry };
|
|
3
|
+
export declare const setReduxModuleEnabled: (enabled: boolean) => void;
|
|
4
|
+
export declare const getReduxModuleEnabled: () => boolean;
|
|
3
5
|
export declare const isReduxConnected: () => boolean;
|
|
4
6
|
export declare const getReduxState: () => any;
|
|
5
7
|
export declare const setReduxAutoRefresh: (val: boolean) => void;
|
|
@@ -13,11 +13,18 @@
|
|
|
13
13
|
// dispatch reference at store-creation time) still update the state tree
|
|
14
14
|
// and per-reducer "last action" consistently.
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.connectReduxStore = exports.inspectorReduxMiddleware = exports.subscribeReduxState = exports.setReduxState = exports.clearActionHistory = exports.getActionHistory = exports.clearLastActionForReducer = exports.getLastActionForReducer = exports.getReduxAutoRefresh = exports.setReduxAutoRefresh = exports.getReduxState = exports.isReduxConnected = void 0;
|
|
16
|
+
exports.connectReduxStore = exports.inspectorReduxMiddleware = exports.subscribeReduxState = exports.setReduxState = exports.clearActionHistory = exports.getActionHistory = exports.clearLastActionForReducer = exports.getLastActionForReducer = exports.getReduxAutoRefresh = exports.setReduxAutoRefresh = exports.getReduxState = exports.isReduxConnected = exports.getReduxModuleEnabled = exports.setReduxModuleEnabled = void 0;
|
|
17
17
|
const helpers_1 = require("../helpers");
|
|
18
18
|
let currentReduxState = null;
|
|
19
19
|
const listeners = new Set();
|
|
20
20
|
let globalReduxAutoRefresh = true;
|
|
21
|
+
let isReduxModuleEnabled = false;
|
|
22
|
+
const setReduxModuleEnabled = (enabled) => {
|
|
23
|
+
isReduxModuleEnabled = enabled;
|
|
24
|
+
};
|
|
25
|
+
exports.setReduxModuleEnabled = setReduxModuleEnabled;
|
|
26
|
+
const getReduxModuleEnabled = () => isReduxModuleEnabled;
|
|
27
|
+
exports.getReduxModuleEnabled = getReduxModuleEnabled;
|
|
21
28
|
let lastActionForReducer = {};
|
|
22
29
|
let actionHistory = [];
|
|
23
30
|
const MAX_HISTORY = 50;
|
|
@@ -176,6 +183,8 @@ function extractSliceName(actionType, affectedSlices) {
|
|
|
176
183
|
return undefined;
|
|
177
184
|
}
|
|
178
185
|
function recordAction(action, prevState, nextState, rawStack) {
|
|
186
|
+
if (!isReduxModuleEnabled)
|
|
187
|
+
return;
|
|
179
188
|
const stack = rawStack || new Error().stack || '';
|
|
180
189
|
const type = actionTypeOf(action);
|
|
181
190
|
const payload = action && typeof action === 'object' && action.payload !== undefined
|
|
@@ -173,9 +173,18 @@ exports.getFetchCommand = getFetchCommand;
|
|
|
173
173
|
const deduplicateLogs = (raw) => {
|
|
174
174
|
const map = new Map();
|
|
175
175
|
raw.forEach(entry => {
|
|
176
|
-
if (!map.has(entry.id)
|
|
176
|
+
if (!map.has(entry.id)) {
|
|
177
177
|
map.set(entry.id, entry);
|
|
178
178
|
}
|
|
179
|
+
else {
|
|
180
|
+
const existing = map.get(entry.id);
|
|
181
|
+
if (existing.status == null && entry.status != null) {
|
|
182
|
+
map.set(entry.id, entry);
|
|
183
|
+
}
|
|
184
|
+
else if ((entry.startTime ?? 0) >= (existing.startTime ?? 0)) {
|
|
185
|
+
map.set(entry.id, entry);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
179
188
|
});
|
|
180
189
|
return Array.from(map.values()).sort((a, b) => b.id - a.id);
|
|
181
190
|
};
|
|
@@ -6,3 +6,12 @@ export declare function saveSettings(settings: PersistedSettings): void;
|
|
|
6
6
|
export declare function clearPersistedSettings(): Promise<void>;
|
|
7
7
|
export declare const isPersistentStorageAvailable: () => boolean;
|
|
8
8
|
export declare function getCustomStorage(): InspectorStorage | null;
|
|
9
|
+
export interface RamLimitsProfile {
|
|
10
|
+
maxNetworkLogs: number;
|
|
11
|
+
maxConsoleLogs: number;
|
|
12
|
+
maxAnalyticsEvents: number;
|
|
13
|
+
maxCrashRecords: number;
|
|
14
|
+
profileName: 'High-End' | 'Standard' | 'Compact' | 'Ultra-Light';
|
|
15
|
+
freeRamMb: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function calculateRamBasedLimits(freeRamMb: number): RamLimitsProfile;
|
|
@@ -10,7 +10,9 @@ exports.loadSettings = loadSettings;
|
|
|
10
10
|
exports.saveSettings = saveSettings;
|
|
11
11
|
exports.clearPersistedSettings = clearPersistedSettings;
|
|
12
12
|
exports.getCustomStorage = getCustomStorage;
|
|
13
|
+
exports.calculateRamBasedLimits = calculateRamBasedLimits;
|
|
13
14
|
const react_native_1 = require("react-native");
|
|
15
|
+
const NativeInspector_1 = require("../native/NativeInspector");
|
|
14
16
|
// In-memory fallback (settings survive for the app session only).
|
|
15
17
|
const memory = new Map();
|
|
16
18
|
let customStorage = null;
|
|
@@ -27,6 +29,13 @@ async function loadSettings() {
|
|
|
27
29
|
const parsed = JSON.parse(raw);
|
|
28
30
|
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
29
31
|
}
|
|
32
|
+
if ((0, NativeInspector_1.isNativeModuleAvailable)()) {
|
|
33
|
+
const raw = await (0, NativeInspector_1.getNativeStorageItem)(SETTINGS_KEY);
|
|
34
|
+
if (raw) {
|
|
35
|
+
const parsed = JSON.parse(raw);
|
|
36
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
30
39
|
if (react_native_1.Platform.OS === 'ios') {
|
|
31
40
|
const raw = react_native_1.Settings.get(SETTINGS_KEY);
|
|
32
41
|
if (!raw)
|
|
@@ -37,7 +46,7 @@ async function loadSettings() {
|
|
|
37
46
|
}
|
|
38
47
|
return raw && typeof raw === 'object' ? raw : {};
|
|
39
48
|
}
|
|
40
|
-
//
|
|
49
|
+
// In-memory fallback
|
|
41
50
|
const raw = memory.get(SETTINGS_KEY);
|
|
42
51
|
if (!raw)
|
|
43
52
|
return {};
|
|
@@ -55,11 +64,13 @@ function saveSettings(settings) {
|
|
|
55
64
|
customStorage.setItem(SETTINGS_KEY, raw);
|
|
56
65
|
return;
|
|
57
66
|
}
|
|
67
|
+
if ((0, NativeInspector_1.isNativeModuleAvailable)()) {
|
|
68
|
+
(0, NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY, raw);
|
|
69
|
+
}
|
|
58
70
|
if (react_native_1.Platform.OS === 'ios') {
|
|
59
71
|
react_native_1.Settings.set({ [SETTINGS_KEY]: raw });
|
|
60
72
|
return;
|
|
61
73
|
}
|
|
62
|
-
// Android/fallback: memory
|
|
63
74
|
memory.set(SETTINGS_KEY, raw);
|
|
64
75
|
}
|
|
65
76
|
catch {
|
|
@@ -77,6 +88,9 @@ async function clearPersistedSettings() {
|
|
|
77
88
|
}
|
|
78
89
|
return;
|
|
79
90
|
}
|
|
91
|
+
if ((0, NativeInspector_1.isNativeModuleAvailable)()) {
|
|
92
|
+
await (0, NativeInspector_1.setNativeStorageItem)(SETTINGS_KEY, null);
|
|
93
|
+
}
|
|
80
94
|
if (react_native_1.Platform.OS === 'ios') {
|
|
81
95
|
react_native_1.Settings.set({ [SETTINGS_KEY]: null });
|
|
82
96
|
return;
|
|
@@ -88,9 +102,51 @@ async function clearPersistedSettings() {
|
|
|
88
102
|
}
|
|
89
103
|
}
|
|
90
104
|
const isPersistentStorageAvailable = () => {
|
|
91
|
-
return customStorage !== null || react_native_1.Platform.OS === 'ios';
|
|
105
|
+
return customStorage !== null || (0, NativeInspector_1.isNativeModuleAvailable)() || react_native_1.Platform.OS === 'ios';
|
|
92
106
|
};
|
|
93
107
|
exports.isPersistentStorageAvailable = isPersistentStorageAvailable;
|
|
94
108
|
function getCustomStorage() {
|
|
95
109
|
return customStorage;
|
|
96
110
|
}
|
|
111
|
+
function calculateRamBasedLimits(freeRamMb) {
|
|
112
|
+
if (freeRamMb >= 3000) {
|
|
113
|
+
return {
|
|
114
|
+
maxNetworkLogs: 1000,
|
|
115
|
+
maxConsoleLogs: 1500,
|
|
116
|
+
maxAnalyticsEvents: 500,
|
|
117
|
+
maxCrashRecords: 100,
|
|
118
|
+
profileName: 'High-End',
|
|
119
|
+
freeRamMb,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
else if (freeRamMb >= 1500) {
|
|
123
|
+
return {
|
|
124
|
+
maxNetworkLogs: 500,
|
|
125
|
+
maxConsoleLogs: 750,
|
|
126
|
+
maxAnalyticsEvents: 250,
|
|
127
|
+
maxCrashRecords: 50,
|
|
128
|
+
profileName: 'Standard',
|
|
129
|
+
freeRamMb,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
else if (freeRamMb >= 600) {
|
|
133
|
+
return {
|
|
134
|
+
maxNetworkLogs: 200,
|
|
135
|
+
maxConsoleLogs: 300,
|
|
136
|
+
maxAnalyticsEvents: 100,
|
|
137
|
+
maxCrashRecords: 25,
|
|
138
|
+
profileName: 'Compact',
|
|
139
|
+
freeRamMb,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
return {
|
|
144
|
+
maxNetworkLogs: 100,
|
|
145
|
+
maxConsoleLogs: 150,
|
|
146
|
+
maxAnalyticsEvents: 50,
|
|
147
|
+
maxCrashRecords: 15,
|
|
148
|
+
profileName: 'Ultra-Light',
|
|
149
|
+
freeRamMb,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -39,12 +39,35 @@
|
|
|
39
39
|
"redux": "Redux"
|
|
40
40
|
},
|
|
41
41
|
"settings": {
|
|
42
|
-
"mainTitle": "Settings",
|
|
42
|
+
"mainTitle": "Settings & Modules",
|
|
43
|
+
"mainSubtitle": "Manage modules and preferences",
|
|
43
44
|
"requiredBadge": "REQUIRED",
|
|
44
45
|
"defaultBadge": "DEFAULT",
|
|
45
46
|
"notConnectedBadge": "NOT CONNECTED",
|
|
46
47
|
"notDetectedBadge": "NOT DETECTED",
|
|
47
48
|
"readOnlyBadge": "READ ONLY",
|
|
49
|
+
"coreBadge": "CORE",
|
|
50
|
+
"activeBadge": "ACTIVE",
|
|
51
|
+
"dormantBadge": "DORMANT",
|
|
52
|
+
"protectedBadge": "PROTECTED",
|
|
53
|
+
"modulesAndTools": "Modules & Tools",
|
|
54
|
+
"uiPreferences": "UI Preferences",
|
|
55
|
+
"zeroOverheadTitle": "Zero Background Overhead",
|
|
56
|
+
"zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
|
|
57
|
+
"unsavedPending": "● Unsaved selections pending",
|
|
58
|
+
"allSynchronized": "All modules synchronized",
|
|
59
|
+
"modulesActive": "{{active}} of {{total}} Modules Active",
|
|
60
|
+
"saveChanges": "Save Changes",
|
|
61
|
+
"settingsSaved": "Settings Saved",
|
|
62
|
+
"settingsSavedDesc": "Active module configurations have been successfully updated.",
|
|
63
|
+
"configure": "Configure",
|
|
64
|
+
"appearanceTheme": "APPEARANCE & THEME",
|
|
65
|
+
"windowLayout": "WINDOW & LAYOUT",
|
|
66
|
+
"startupDefault": "STARTUP & DEFAULT SCREEN",
|
|
67
|
+
"logFiltersDeduplication": "LOG FILTERS & DEDUPLICATION",
|
|
68
|
+
"resetSettings": "Reset All Settings",
|
|
69
|
+
"resetSettingsDesc": "Wipe customized preferences back to default",
|
|
70
|
+
"reset": "Reset",
|
|
48
71
|
"reduxNotConnectedTip": "Redux store is not connected. Call connectReduxStore(store) or use inspectorReduxMiddleware to enable.",
|
|
49
72
|
"analyticsNotConnectedTip": "Analytics is not initialized. Call setupAnalyticsLogger(analytics()) to enable.",
|
|
50
73
|
"tabVisibility": "Tab Visibility",
|
|
@@ -55,7 +78,7 @@
|
|
|
55
78
|
"title": "APIs Settings",
|
|
56
79
|
"total": "Total: {{count}}",
|
|
57
80
|
"maxRequestLogs": "Max Request Logs",
|
|
58
|
-
"maxRequestLogsDescription": "
|
|
81
|
+
"maxRequestLogsDescription": "Buffer size of network requests preserved in memory",
|
|
59
82
|
"clearNetworkLogs": "Clear Network Logs",
|
|
60
83
|
"clearNetworkLogsDescription": "{{count}} requests stored",
|
|
61
84
|
"networkLogsCleared": "Network logs cleared.",
|
|
@@ -69,56 +92,91 @@
|
|
|
69
92
|
"title": "Logs Settings",
|
|
70
93
|
"total": "Total: {{count}}",
|
|
71
94
|
"maxConsoleLogs": "Max Console Logs",
|
|
72
|
-
"maxConsoleLogsDescription": "How many console
|
|
73
|
-
"logLevels": "Log
|
|
74
|
-
"logLevelsDescription": "
|
|
75
|
-
"showInfo": "Show
|
|
76
|
-
"
|
|
77
|
-
"
|
|
95
|
+
"maxConsoleLogsDescription": "How many console messages to retain",
|
|
96
|
+
"logLevels": "Log Severities",
|
|
97
|
+
"logLevelsDescription": "Select which severities to capture in Logs",
|
|
98
|
+
"showInfo": "Show Info logs",
|
|
99
|
+
"showInfoDesc": "Informational logs & debug prints",
|
|
100
|
+
"showWarn": "Show Warning logs",
|
|
101
|
+
"showWarnDesc": "Warning notices & deprecations",
|
|
102
|
+
"showError": "Show Error logs",
|
|
103
|
+
"showErrorDesc": "Runtime errors & exceptions",
|
|
78
104
|
"clearConsoleLogs": "Clear Console Logs",
|
|
79
105
|
"clearConsoleLogsDescription": "{{count}} logs stored",
|
|
80
106
|
"consoleLogsCleared": "Console logs cleared."
|
|
81
107
|
},
|
|
82
108
|
"analytics": {
|
|
83
109
|
"title": "Analytics Settings",
|
|
84
|
-
"total": "
|
|
85
|
-
"maxAnalyticsEvents": "
|
|
86
|
-
"maxAnalyticsEventsDescription": "
|
|
87
|
-
"clearAnalyticsEvents": "Clear Analytics
|
|
88
|
-
"clearAnalyticsEventsDescription": "
|
|
110
|
+
"total": "Events: {{count}}",
|
|
111
|
+
"maxAnalyticsEvents": "Events Captured",
|
|
112
|
+
"maxAnalyticsEventsDescription": "{{count}} analytics events stored in buffer",
|
|
113
|
+
"clearAnalyticsEvents": "Clear Analytics History",
|
|
114
|
+
"clearAnalyticsEventsDescription": "Wipe all captured telemetry events",
|
|
89
115
|
"analyticsEventsCleared": "Analytics events cleared."
|
|
90
116
|
},
|
|
91
117
|
"redux": {
|
|
92
118
|
"title": "Redux Settings",
|
|
93
119
|
"reducers": "Reducers: {{count}}",
|
|
94
120
|
"autoRefresh": "Auto-refresh Store",
|
|
95
|
-
"autoRefreshDescription": "
|
|
121
|
+
"autoRefreshDescription": "Capture Redux store state tree on every dispatch",
|
|
96
122
|
"defaultJsonExpandDepth": "Default JSON Expand Depth",
|
|
97
123
|
"defaultJsonExpandDepthDescription": "Initial depth of Redux state tree to auto-expand",
|
|
98
124
|
"clearReduxState": "Clear Redux State",
|
|
99
|
-
"clearReduxStateDescription": "Reset state snapshot in inspector",
|
|
100
|
-
"clearReduxStateEmpty": "No store snapshot
|
|
125
|
+
"clearReduxStateDescription": "Reset current state snapshot in inspector",
|
|
126
|
+
"clearReduxStateEmpty": "No store snapshot recorded",
|
|
101
127
|
"reduxStateCleared": "Redux state snapshot cleared.",
|
|
102
128
|
"clearReduxTimeline": "Clear Redux Timeline",
|
|
103
129
|
"clearReduxTimelineDescription": "Remove all captured action history",
|
|
104
130
|
"reduxTimelineCleared": "Redux action history cleared."
|
|
105
131
|
},
|
|
132
|
+
"bundle": {
|
|
133
|
+
"title": "Bundle Settings",
|
|
134
|
+
"sourceBundler": "Metro Source Bundler",
|
|
135
|
+
"sourceBundlerDesc": "Parses live module trees and calculates binary size breakdowns",
|
|
136
|
+
"clearCache": "Clear Bundle Cache",
|
|
137
|
+
"clearCacheDesc": "Force re-fetching and parsing of JS bundle",
|
|
138
|
+
"cacheCleared": "Bundle analysis cache cleared."
|
|
139
|
+
},
|
|
140
|
+
"performance": {
|
|
141
|
+
"title": "Performance Settings",
|
|
142
|
+
"frameMeasurement": "Live Frame Measurement",
|
|
143
|
+
"frameMeasurementDesc": "Samples UI/JS frame rates & detects wasteful re-renders",
|
|
144
|
+
"clearEvents": "Clear Performance Events",
|
|
145
|
+
"clearEventsDesc": "Reset recorded jank and FPS drops history",
|
|
146
|
+
"eventsCleared": "Performance events cleared."
|
|
147
|
+
},
|
|
148
|
+
"crash": {
|
|
149
|
+
"title": "Crash Settings",
|
|
150
|
+
"maxCrashLogs": "Max Crash Logs",
|
|
151
|
+
"maxCrashLogsDesc": "How many crash records to preserve in history",
|
|
152
|
+
"globalGuard": "Global Crash Guard",
|
|
153
|
+
"globalGuardDesc": "Intercepts native, JS, and render errors directly",
|
|
154
|
+
"clearHistory": "Clear Crash History",
|
|
155
|
+
"clearHistoryDesc": "{{count}} crash logs stored",
|
|
156
|
+
"historyCleared": "Crash logs cleared."
|
|
157
|
+
},
|
|
106
158
|
"general": {
|
|
107
|
-
"darkMode": "Dark Mode",
|
|
108
|
-
"darkModeDescription": "
|
|
109
|
-
"modalHeight": "
|
|
110
|
-
"modalHeightDescription": "
|
|
111
|
-
"modalAnimation": "
|
|
112
|
-
"modalAnimationDescription": "
|
|
159
|
+
"darkMode": "Dark Mode Theme",
|
|
160
|
+
"darkModeDescription": "Toggle sleek dark aesthetic or light contrast",
|
|
161
|
+
"modalHeight": "Inspector Window Height",
|
|
162
|
+
"modalHeightDescription": "Modal screen coverage percentage",
|
|
163
|
+
"modalAnimation": "Transition Animation",
|
|
164
|
+
"modalAnimationDescription": "Entrance and dismissal presentation style",
|
|
113
165
|
"duplicateLogs": "Show Duplicate Logs",
|
|
114
|
-
"duplicateLogsDescription": "
|
|
166
|
+
"duplicateLogsDescription": "Off: Identical repeated entries collapse into ×N badges",
|
|
167
|
+
"defaultOpeningTab": "Default Opening Tab",
|
|
168
|
+
"defaultOpeningTabDesc": "Initial tab active when launcher button is tapped",
|
|
169
|
+
"activeConsoleLogLevels": "Active Console Log Levels",
|
|
170
|
+
"activeConsoleLogLevelsDesc": "Select which severities to capture in Logs",
|
|
115
171
|
"resetToDefaults": "Reset to Defaults",
|
|
116
172
|
"resetToDefaultsDescription": "Restore all inspector settings",
|
|
117
173
|
"resetConfirmationTitle": "Settings Reset",
|
|
118
174
|
"resetConfirmationMessage": "All settings have been reset to default values.",
|
|
119
175
|
"storageStatus": "Persistent Storage",
|
|
120
|
-
"storageStatusEnabled": "Settings
|
|
121
|
-
"
|
|
176
|
+
"storageStatusEnabled": "Settings Storage: Persistent ({{type}})",
|
|
177
|
+
"storageStatusEnabledDesc": "Your preferences and module visibility persist across app reboots.",
|
|
178
|
+
"storageStatusDisabled": "Settings Storage: In-Memory (Temporary)",
|
|
179
|
+
"storageStatusDisabledDesc": "Preferences reset on app kill. Pass custom storage to <NetworkInspector storage={...} /> to persist on Android."
|
|
122
180
|
}
|
|
123
181
|
},
|
|
124
182
|
"network": {
|
|
@@ -178,10 +236,20 @@
|
|
|
178
236
|
"noMatchingHeaders": "No matching headers",
|
|
179
237
|
"diffHidden": "{ Diff hidden }",
|
|
180
238
|
"noDiff": "No differences from previous API.",
|
|
239
|
+
"healthTitle": "Network Health & Telemetry",
|
|
240
|
+
"successRate": "Success Rate",
|
|
241
|
+
"avgLatency": "Avg Latency",
|
|
242
|
+
"p95Latency": "P95 Latency",
|
|
243
|
+
"bandwidth": "Bandwidth",
|
|
244
|
+
"fastest": "Fastest",
|
|
245
|
+
"slowest": "Slowest",
|
|
246
|
+
"timingWaterfall": "Timing Waterfall & Latency",
|
|
247
|
+
"throughput": "Throughput",
|
|
248
|
+
"performanceTier": "Performance Tier",
|
|
181
249
|
"perf": {
|
|
182
|
-
"fast": "Fast",
|
|
183
|
-
"moderate": "Moderate",
|
|
184
|
-
"slow": "Slow"
|
|
250
|
+
"fast": "Fast (< 200ms)",
|
|
251
|
+
"moderate": "Moderate (200-800ms)",
|
|
252
|
+
"slow": "Slow (> 800ms)"
|
|
185
253
|
},
|
|
186
254
|
"jsonViewer": {
|
|
187
255
|
"pretty": "Pretty",
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -12,4 +12,5 @@ export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeRe
|
|
|
12
12
|
export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/gaAnalyticsRegistry';
|
|
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
|
+
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';
|
|
15
16
|
export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
|