react-native-inapp-inspector 2.0.6 → 2.1.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/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +0 -11
- package/dist/commonjs/components/Inspector/InspectorHeader.js +25 -28
- package/dist/commonjs/components/Inspector/MainScreen.js +2 -15
- package/dist/commonjs/components/Inspector/NetworkDetail.js +0 -15
- package/dist/commonjs/components/Inspector/PerformanceTab.js +18 -30
- package/dist/commonjs/components/Inspector/SettingsPanel.js +15 -326
- package/dist/commonjs/components/Inspector/TabBar.js +2 -23
- package/dist/commonjs/components/NetworkIcons.d.ts +0 -12
- package/dist/commonjs/components/NetworkIcons.js +3 -72
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/index.d.ts +0 -2
- package/dist/commonjs/helpers/index.js +1 -12
- package/dist/commonjs/helpers/telemetry.js +4 -4
- package/dist/commonjs/i18n/locales/en.json +2 -3
- package/dist/commonjs/index.d.ts +0 -1
- package/dist/commonjs/index.js +9 -113
- package/dist/commonjs/native/NativeInspector.d.ts +0 -1
- package/dist/commonjs/types/enums.d.ts +0 -7
- package/dist/commonjs/types/enums.js +0 -7
- package/dist/commonjs/types/interfaces.d.ts +0 -73
- package/dist/esm/components/Inspector/InspectorHeader.js +25 -28
- package/dist/esm/components/Inspector/MainScreen.js +2 -15
- package/dist/esm/components/Inspector/NetworkDetail.js +1 -16
- package/dist/esm/components/Inspector/PerformanceTab.js +19 -31
- package/dist/esm/components/Inspector/SettingsPanel.js +16 -327
- package/dist/esm/components/Inspector/TabBar.js +3 -24
- package/dist/esm/components/NetworkIcons.d.ts +0 -12
- package/dist/esm/components/NetworkIcons.js +0 -57
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/index.d.ts +0 -2
- package/dist/esm/helpers/index.js +0 -10
- package/dist/esm/helpers/telemetry.js +4 -4
- package/dist/esm/i18n/locales/en.json +2 -3
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +8 -109
- package/dist/esm/native/NativeInspector.d.ts +0 -1
- package/dist/esm/types/enums.d.ts +0 -7
- package/dist/esm/types/enums.js +0 -7
- package/dist/esm/types/interfaces.d.ts +0 -73
- package/ios/NetworkInspectorModule.mm +5 -12
- package/package.json +1 -4
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/build/reports/problems/problems-report.html +0 -659
- package/dist/commonjs/components/Inspector/AuditTab.d.ts +0 -3
- package/dist/commonjs/components/Inspector/AuditTab.js +0 -741
- package/dist/commonjs/components/Inspector/DeviceTab.d.ts +0 -3
- package/dist/commonjs/components/Inspector/DeviceTab.js +0 -717
- package/dist/commonjs/components/Inspector/PerformanceHud.d.ts +0 -7
- package/dist/commonjs/components/Inspector/PerformanceHud.js +0 -210
- package/dist/commonjs/components/Inspector/RequestReplayModal.d.ts +0 -9
- package/dist/commonjs/components/Inspector/RequestReplayModal.js +0 -792
- package/dist/commonjs/components/Inspector/RequestReplayView.d.ts +0 -8
- package/dist/commonjs/components/Inspector/RequestReplayView.js +0 -871
- package/dist/commonjs/components/Inspector/StorageTab.d.ts +0 -3
- package/dist/commonjs/components/Inspector/StorageTab.js +0 -610
- package/dist/commonjs/customHooks/storageInspector.d.ts +0 -13
- package/dist/commonjs/customHooks/storageInspector.js +0 -179
- package/dist/commonjs/helpers/deviceInfo.d.ts +0 -4
- package/dist/commonjs/helpers/deviceInfo.js +0 -94
- package/dist/commonjs/helpers/packageAuditor.d.ts +0 -5
- package/dist/commonjs/helpers/packageAuditor.js +0 -182
- package/dist/esm/components/Inspector/AuditTab.d.ts +0 -3
- package/dist/esm/components/Inspector/AuditTab.js +0 -702
- package/dist/esm/components/Inspector/DeviceTab.d.ts +0 -3
- package/dist/esm/components/Inspector/DeviceTab.js +0 -678
- package/dist/esm/components/Inspector/PerformanceHud.d.ts +0 -7
- package/dist/esm/components/Inspector/PerformanceHud.js +0 -170
- package/dist/esm/components/Inspector/RequestReplayModal.d.ts +0 -9
- package/dist/esm/components/Inspector/RequestReplayModal.js +0 -752
- package/dist/esm/components/Inspector/RequestReplayView.d.ts +0 -8
- package/dist/esm/components/Inspector/RequestReplayView.js +0 -831
- package/dist/esm/components/Inspector/StorageTab.d.ts +0 -3
- package/dist/esm/components/Inspector/StorageTab.js +0 -571
- package/dist/esm/customHooks/storageInspector.d.ts +0 -13
- package/dist/esm/customHooks/storageInspector.js +0 -170
- package/dist/esm/helpers/deviceInfo.d.ts +0 -4
- package/dist/esm/helpers/deviceInfo.js +0 -89
- package/dist/esm/helpers/packageAuditor.d.ts +0 -5
- package/dist/esm/helpers/packageAuditor.js +0 -173
|
@@ -31,8 +31,6 @@ export declare const formatTimeShort: (ts: number) => string;
|
|
|
31
31
|
export declare const formatTime: (ts: number) => string;
|
|
32
32
|
/** Formats a relative gap like "+2s" / "+1m 5s" / "+350ms". */
|
|
33
33
|
export declare const formatGap: (ms: number) => string;
|
|
34
|
-
/** Formats byte size into human readable B / KB / MB. */
|
|
35
|
-
export declare const formatBytes: (bytes: number) => string;
|
|
36
34
|
/** Finds the first JSON object/array embedded anywhere in a log message. */
|
|
37
35
|
export declare const getJsonContent: (message: string) => JsonContent | null;
|
|
38
36
|
/** Pretty-prints JSON data showing 3-4 lines with trailing "..." */
|
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.getRuntimeDiagnostics = exports.getCategoryColors = exports.registerGAPlugin = exports.getEventCategory = exports.getEventColor = exports.ANALYTICS_EVENT_PALETTE = exports.openInVSCode = exports.parseStackLine = exports.getJsonPreviewText = exports.getJsonContent = exports.
|
|
20
|
+
exports.getRuntimeDiagnostics = exports.getCategoryColors = exports.registerGAPlugin = exports.getEventCategory = exports.getEventColor = exports.ANALYTICS_EVENT_PALETTE = exports.openInVSCode = exports.parseStackLine = exports.getJsonPreviewText = exports.getJsonContent = exports.formatGap = exports.formatTime = exports.formatTimeShort = exports.handleOpenExternalLink = exports.getAppName = exports.getBundleIdentifier = exports.formatDateTimeToAnalytics = exports.isAllValuesEmpty = exports.getLocalizedFilePathWithSlash = exports.getLocalizedFilePath = exports.formatDisplayUrl = exports.getDiff = exports.flattenObject = exports.getNavigationInfo = exports.escapeRegex = exports.deduplicateLogs = exports.getFetchCommand = exports.getCurlCommand = exports.getBaseUrl = exports.getPath = exports.copyToClipboard = exports.getSize = exports.getDurationColor = exports.getStatusColor = exports.formatTimestamp = exports.formatDateTime = exports.getDomainColor = void 0;
|
|
21
21
|
const react_native_1 = require("react-native");
|
|
22
22
|
const clipboard_1 = __importDefault(require("@react-native-clipboard/clipboard"));
|
|
23
23
|
const toast_1 = require("./toast");
|
|
@@ -440,17 +440,6 @@ const formatGap = (ms) => {
|
|
|
440
440
|
return rem > 0 ? `+${m}m ${rem}s` : `+${m}m`;
|
|
441
441
|
};
|
|
442
442
|
exports.formatGap = formatGap;
|
|
443
|
-
/** Formats byte size into human readable B / KB / MB. */
|
|
444
|
-
const formatBytes = (bytes) => {
|
|
445
|
-
if (bytes === 0)
|
|
446
|
-
return '0 B';
|
|
447
|
-
if (bytes < 1024)
|
|
448
|
-
return `${bytes} B`;
|
|
449
|
-
if (bytes < 1024 * 1024)
|
|
450
|
-
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
451
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
452
|
-
};
|
|
453
|
-
exports.formatBytes = formatBytes;
|
|
454
443
|
/** Finds the first JSON object/array embedded anywhere in a log message. */
|
|
455
444
|
const getJsonContent = (message) => {
|
|
456
445
|
if (!message)
|
|
@@ -31,8 +31,8 @@ const constants_1 = require("../constants");
|
|
|
31
31
|
const NativeInspector_1 = require("../native/NativeInspector");
|
|
32
32
|
// ─── GA4 Measurement Protocol Configuration ──────────────────────────────────
|
|
33
33
|
// Automatically replaced at build-time from .env by scripts/inject-telemetry.js
|
|
34
|
-
exports.GA4_MEASUREMENT_ID = 'G-
|
|
35
|
-
exports.GA4_API_SECRET = '
|
|
34
|
+
exports.GA4_MEASUREMENT_ID = 'G-XXXXXXXXXX';
|
|
35
|
+
exports.GA4_API_SECRET = 'YOUR_GA4_API_SECRET';
|
|
36
36
|
const GA4_ENDPOINT = 'https://www.google-analytics.com/mp/collect';
|
|
37
37
|
const CLIENT_ID_KEY = 'telemetry_client_id';
|
|
38
38
|
// Stable session ID created once per JavaScript runtime instance
|
|
@@ -254,9 +254,9 @@ async function trackTelemetryEvent(eventName, params = {}, options) {
|
|
|
254
254
|
return;
|
|
255
255
|
// Don't send if credentials haven't been configured yet
|
|
256
256
|
if (!exports.GA4_MEASUREMENT_ID ||
|
|
257
|
-
exports.GA4_MEASUREMENT_ID === 'G-
|
|
257
|
+
exports.GA4_MEASUREMENT_ID === 'G-XXXXXXXXXX' ||
|
|
258
258
|
!exports.GA4_API_SECRET ||
|
|
259
|
-
exports.GA4_API_SECRET === '
|
|
259
|
+
exports.GA4_API_SECRET === 'YOUR_GA4_API_SECRET') {
|
|
260
260
|
return;
|
|
261
261
|
}
|
|
262
262
|
try {
|
|
@@ -50,9 +50,8 @@
|
|
|
50
50
|
"activeBadge": "ACTIVE",
|
|
51
51
|
"dormantBadge": "DORMANT",
|
|
52
52
|
"protectedBadge": "PROTECTED",
|
|
53
|
-
"modulesAndTools": "Modules &
|
|
54
|
-
"
|
|
55
|
-
"uiPreferences": "UI & Appearance",
|
|
53
|
+
"modulesAndTools": "Modules & Tools",
|
|
54
|
+
"uiPreferences": "UI Preferences",
|
|
56
55
|
"zeroOverheadTitle": "Zero Background Overhead",
|
|
57
56
|
"zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
|
|
58
57
|
"unsavedPending": "● Unsaved selections pending",
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -14,6 +14,5 @@ export { usePerformanceTracker, useComponentProfiler, useNavigationProfiler, tra
|
|
|
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
16
|
export { sendSessionTelemetryPing, trackTelemetryEvent, trackInspectorOpen, trackTabSwitch, trackLogExport, GA4_MEASUREMENT_ID, GA4_API_SECRET, } from './helpers';
|
|
17
|
-
export { runLivePackageAudit, logCodeQualityIssue, clearCustomAuditIssues, } from './helpers/packageAuditor';
|
|
18
17
|
export { BrandSquareIcon, BrandCircleIcon, } from './components/NetworkIcons';
|
|
19
18
|
export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, CrashType, CrashExportFormat, CrashDetailSubTab, CrashFilterType, BreadcrumbType, } from './types';
|
package/dist/commonjs/index.js
CHANGED
|
@@ -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.
|
|
41
|
-
exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab =
|
|
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;
|
|
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");
|
|
@@ -64,22 +64,14 @@ const analyticsLogger_1 = require("./customHooks/analyticsLogger");
|
|
|
64
64
|
const reduxLogger_1 = require("./customHooks/reduxLogger");
|
|
65
65
|
const performanceTracker_1 = require("./customHooks/performanceTracker");
|
|
66
66
|
const bundleAnalyzer_1 = require("./customHooks/bundleAnalyzer");
|
|
67
|
-
const storageInspector_1 = require("./customHooks/storageInspector");
|
|
68
|
-
const deviceInfo_1 = require("./helpers/deviceInfo");
|
|
69
|
-
const packageAuditor_1 = require("./helpers/packageAuditor");
|
|
70
67
|
const NativeInspector_2 = require("./native/NativeInspector");
|
|
71
68
|
const constants_1 = require("./constants");
|
|
72
69
|
// Stylesheet
|
|
73
70
|
const styles_1 = require("./styles");
|
|
74
|
-
const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigationRef, appIcon, environment, initialVisible, visible: controlledVisible,
|
|
75
|
-
// Zero-overhead production stub: if disabled, return null immediately
|
|
76
|
-
if (!enabled || !isEnabled) {
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
71
|
+
const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigationRef, appIcon, environment, initialVisible, visible: controlledVisible, }) => {
|
|
79
72
|
// Set custom storage synchronously during render phase
|
|
80
73
|
(0, settingsStore_1.setCustomStorage)(storage || null);
|
|
81
74
|
const [isDark, setIsDark] = (0, react_1.useState)(false);
|
|
82
|
-
const [isPerformanceHudEnabled, setIsPerformanceHudEnabled] = (0, react_1.useState)(enablePerformanceHud);
|
|
83
75
|
const [reduxState, setReduxState] = (0, react_1.useState)(null);
|
|
84
76
|
// Per-reducer last action is kept in component state so the
|
|
85
77
|
// Redux tab re-renders live on every dispatch, independent of the state tree ref.
|
|
@@ -94,11 +86,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
94
86
|
setVisible(controlledVisible);
|
|
95
87
|
}
|
|
96
88
|
}, [controlledVisible]);
|
|
97
|
-
(0, react_1.useEffect)(() => {
|
|
98
|
-
if (enablePerformanceHud !== undefined) {
|
|
99
|
-
setIsPerformanceHudEnabled(enablePerformanceHud);
|
|
100
|
-
}
|
|
101
|
-
}, [enablePerformanceHud]);
|
|
102
89
|
const [isReady, setIsReady] = (0, react_1.useState)(false);
|
|
103
90
|
const [selected, setSelected] = (0, react_1.useState)(null);
|
|
104
91
|
const [selectedLogs, setSelectedLogs] = (0, react_1.useState)(new Set());
|
|
@@ -138,7 +125,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
138
125
|
const [showReqDiff, setShowReqDiff] = (0, react_1.useState)(false);
|
|
139
126
|
const [showResDiff, setShowResDiff] = (0, react_1.useState)(false);
|
|
140
127
|
// ─── Analytics state ───────────────────────────────────────────────────────
|
|
141
|
-
const [activeTab, setActiveTab] = (0, react_1.useState)(
|
|
128
|
+
const [activeTab, setActiveTab] = (0, react_1.useState)('apis');
|
|
142
129
|
const [analyticsEvents, setAnalyticsEvents] = (0, react_1.useState)([]);
|
|
143
130
|
// ─── Logs state ────────────────────────────────────────────────────────────
|
|
144
131
|
const [consoleLogs, setConsoleLogs] = (0, react_1.useState)([]);
|
|
@@ -194,47 +181,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
194
181
|
setLastReadCrashesCount(crashRecords.length);
|
|
195
182
|
}
|
|
196
183
|
}, [activeTab, crashRecords.length]);
|
|
197
|
-
// ─── Storage state ─────────────────────────────────────────────────────────
|
|
198
|
-
const [storageEntries, setStorageEntries] = (0, react_1.useState)([]);
|
|
199
|
-
const [selectedStorageKey, setSelectedStorageKey] = (0, react_1.useState)(null);
|
|
200
|
-
const refreshStorageEntries = (0, react_1.useCallback)(async () => {
|
|
201
|
-
try {
|
|
202
|
-
const entries = await (0, storageInspector_1.fetchAllStorageEntries)();
|
|
203
|
-
setStorageEntries(entries);
|
|
204
|
-
}
|
|
205
|
-
catch { }
|
|
206
|
-
}, []);
|
|
207
|
-
const updateStorageEntry = (0, react_1.useCallback)(async (key, value) => {
|
|
208
|
-
await (0, storageInspector_1.setStorageItem)(key, value);
|
|
209
|
-
await refreshStorageEntries();
|
|
210
|
-
}, [refreshStorageEntries]);
|
|
211
|
-
const deleteStorageEntry = (0, react_1.useCallback)(async (key) => {
|
|
212
|
-
await (0, storageInspector_1.removeStorageItem)(key);
|
|
213
|
-
await refreshStorageEntries();
|
|
214
|
-
}, [refreshStorageEntries]);
|
|
215
|
-
const clearAllStorageEntries = (0, react_1.useCallback)(async () => {
|
|
216
|
-
await (0, storageInspector_1.clearAllStorage)();
|
|
217
|
-
await refreshStorageEntries();
|
|
218
|
-
}, [refreshStorageEntries]);
|
|
219
|
-
(0, react_1.useEffect)(() => {
|
|
220
|
-
refreshStorageEntries();
|
|
221
|
-
const unsub = (0, storageInspector_1.subscribeStorageChanges)(refreshStorageEntries);
|
|
222
|
-
return () => unsub();
|
|
223
|
-
}, [refreshStorageEntries]);
|
|
224
|
-
// ─── Device info state ──────────────────────────────────────────────────────
|
|
225
|
-
const [deviceInfo] = (0, react_1.useState)(() => (0, deviceInfo_1.getSystemDiagnostics)());
|
|
226
|
-
// ─── Code Quality & Package Audit state ─────────────────────────────────────
|
|
227
|
-
const [auditReport, setAuditReport] = (0, react_1.useState)(() => (0, packageAuditor_1.runLivePackageAudit)());
|
|
228
|
-
(0, react_1.useEffect)(() => {
|
|
229
|
-
const unsub = (0, packageAuditor_1.subscribeAuditChanges)(setAuditReport);
|
|
230
|
-
return () => unsub();
|
|
231
|
-
}, []);
|
|
232
|
-
const refreshAuditReport = (0, react_1.useCallback)(() => {
|
|
233
|
-
setAuditReport((0, packageAuditor_1.runLivePackageAudit)());
|
|
234
|
-
}, []);
|
|
235
|
-
const logCustomAuditIssue = (0, react_1.useCallback)((issue) => {
|
|
236
|
-
(0, packageAuditor_1.logCodeQualityIssue)(issue);
|
|
237
|
-
}, []);
|
|
238
184
|
const [maxConsoleLogs, setMaxConsoleLogs] = (0, react_1.useState)(100);
|
|
239
185
|
const [showConsoleLevels, setShowConsoleLevels] = (0, react_1.useState)({
|
|
240
186
|
info: true,
|
|
@@ -275,9 +221,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
275
221
|
logs: true,
|
|
276
222
|
analytics: false,
|
|
277
223
|
redux: false,
|
|
278
|
-
storage: false,
|
|
279
|
-
device: false,
|
|
280
|
-
audit: false,
|
|
281
224
|
bundle: false,
|
|
282
225
|
performance: false,
|
|
283
226
|
crash: false,
|
|
@@ -332,9 +275,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
332
275
|
logs: true,
|
|
333
276
|
analytics: false,
|
|
334
277
|
redux: false,
|
|
335
|
-
storage: false,
|
|
336
|
-
device: false,
|
|
337
|
-
audit: false,
|
|
338
278
|
bundle: false,
|
|
339
279
|
performance: false,
|
|
340
280
|
crash: false,
|
|
@@ -372,24 +312,14 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
372
312
|
setModalHeightPercent(saved.modalHeightPercent);
|
|
373
313
|
if (saved.modalAnimationType)
|
|
374
314
|
setModalAnimationType(saved.modalAnimationType);
|
|
375
|
-
if (saved.tabVisibility)
|
|
376
|
-
const savedVis = saved.tabVisibility;
|
|
315
|
+
if (saved.tabVisibility)
|
|
377
316
|
setTabVisibility(prev => ({
|
|
378
317
|
...prev,
|
|
379
|
-
...
|
|
380
|
-
storage: savedVis.storage ?? false,
|
|
381
|
-
device: savedVis.device ?? false,
|
|
382
|
-
audit: savedVis.audit ?? false,
|
|
318
|
+
...saved.tabVisibility,
|
|
383
319
|
apis: true, // APIs is always required
|
|
384
320
|
}));
|
|
385
|
-
|
|
386
|
-
if (initialTab) {
|
|
387
|
-
setActiveTab(initialTab);
|
|
388
|
-
}
|
|
389
|
-
else if (saved.defaultTab) {
|
|
321
|
+
if (saved.defaultTab)
|
|
390
322
|
setDefaultTab(saved.defaultTab);
|
|
391
|
-
setActiveTab(saved.defaultTab);
|
|
392
|
-
}
|
|
393
323
|
if (saved.isAutoRamLimitEnabled != null)
|
|
394
324
|
setIsAutoRamLimitEnabled(saved.isAutoRamLimitEnabled);
|
|
395
325
|
if (saved.maxNetworkLogs != null)
|
|
@@ -410,10 +340,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
410
340
|
setShowDuplicateLogs(saved.showDuplicateLogs);
|
|
411
341
|
if (saved.showUpdateToast != null)
|
|
412
342
|
setShowUpdateToast(saved.showUpdateToast);
|
|
413
|
-
if (
|
|
414
|
-
setActiveTab(initialTab);
|
|
415
|
-
}
|
|
416
|
-
else if (saved.defaultTab) {
|
|
343
|
+
if (saved.defaultTab) {
|
|
417
344
|
const dt = saved.defaultTab;
|
|
418
345
|
const vis = {
|
|
419
346
|
...{
|
|
@@ -421,9 +348,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
421
348
|
logs: true,
|
|
422
349
|
analytics: false,
|
|
423
350
|
redux: false,
|
|
424
|
-
storage: false,
|
|
425
|
-
device: false,
|
|
426
|
-
audit: false,
|
|
427
351
|
bundle: false,
|
|
428
352
|
performance: false,
|
|
429
353
|
crash: false,
|
|
@@ -892,12 +816,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
892
816
|
? defaultTab
|
|
893
817
|
: 'apis';
|
|
894
818
|
setActiveTab(target);
|
|
895
|
-
setSelected(null);
|
|
896
|
-
setSelectedEvent(null);
|
|
897
|
-
setSelectedLog(null);
|
|
898
|
-
setSelectedReduxSlice(null);
|
|
899
|
-
setSelectedReduxAction(null);
|
|
900
|
-
setSelectedCrash(null);
|
|
901
819
|
// Track inspector opened event in GA4
|
|
902
820
|
(0, helpers_1.trackInspectorOpen)({ activeTab: target });
|
|
903
821
|
// Instant synchronization of data collected while modal was closed
|
|
@@ -1877,20 +1795,6 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
1877
1795
|
setCrashRecords([]);
|
|
1878
1796
|
setSelectedCrash(null);
|
|
1879
1797
|
},
|
|
1880
|
-
// ─── Storage ─────────────────────────────────────────────────────────
|
|
1881
|
-
storageEntries,
|
|
1882
|
-
refreshStorageEntries,
|
|
1883
|
-
updateStorageEntry,
|
|
1884
|
-
deleteStorageEntry,
|
|
1885
|
-
clearAllStorageEntries,
|
|
1886
|
-
selectedStorageKey,
|
|
1887
|
-
setSelectedStorageKey,
|
|
1888
|
-
// ─── Device ──────────────────────────────────────────────────────────
|
|
1889
|
-
deviceInfo,
|
|
1890
|
-
// ─── Audit / Code Quality ─────────────────────────────────────────────
|
|
1891
|
-
auditReport,
|
|
1892
|
-
refreshAuditReport,
|
|
1893
|
-
logCustomAuditIssue,
|
|
1894
1798
|
// ─── Settings ───────────────────────────────────────────────────────
|
|
1895
1799
|
settingsActiveSubTab,
|
|
1896
1800
|
setSettingsActiveSubTab,
|
|
@@ -1915,17 +1819,13 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
1915
1819
|
isAutoRamLimitEnabled,
|
|
1916
1820
|
setIsAutoRamLimitEnabled,
|
|
1917
1821
|
deviceFreeRamMb,
|
|
1918
|
-
isPerformanceHudEnabled,
|
|
1919
|
-
setIsPerformanceHudEnabled,
|
|
1920
1822
|
reduxAutoRefresh,
|
|
1921
1823
|
setReduxAutoRefreshState,
|
|
1922
1824
|
reduxExpandDepth,
|
|
1923
1825
|
setReduxExpandDepth,
|
|
1924
1826
|
};
|
|
1925
1827
|
return (<InspectorContext_1.InspectorContext.Provider value={contextValue}>
|
|
1926
|
-
<
|
|
1927
|
-
<MainScreen_1.default />
|
|
1928
|
-
</react_native_1.View>
|
|
1828
|
+
<MainScreen_1.default />
|
|
1929
1829
|
</InspectorContext_1.InspectorContext.Provider>);
|
|
1930
1830
|
};
|
|
1931
1831
|
const NetworkInspectorWrapper = (props) => {
|
|
@@ -2037,10 +1937,6 @@ Object.defineProperty(exports, "trackTabSwitch", { enumerable: true, get: functi
|
|
|
2037
1937
|
Object.defineProperty(exports, "trackLogExport", { enumerable: true, get: function () { return helpers_2.trackLogExport; } });
|
|
2038
1938
|
Object.defineProperty(exports, "GA4_MEASUREMENT_ID", { enumerable: true, get: function () { return helpers_2.GA4_MEASUREMENT_ID; } });
|
|
2039
1939
|
Object.defineProperty(exports, "GA4_API_SECRET", { enumerable: true, get: function () { return helpers_2.GA4_API_SECRET; } });
|
|
2040
|
-
var packageAuditor_2 = require("./helpers/packageAuditor");
|
|
2041
|
-
Object.defineProperty(exports, "runLivePackageAudit", { enumerable: true, get: function () { return packageAuditor_2.runLivePackageAudit; } });
|
|
2042
|
-
Object.defineProperty(exports, "logCodeQualityIssue", { enumerable: true, get: function () { return packageAuditor_2.logCodeQualityIssue; } });
|
|
2043
|
-
Object.defineProperty(exports, "clearCustomAuditIssues", { enumerable: true, get: function () { return packageAuditor_2.clearCustomAuditIssues; } });
|
|
2044
1940
|
var NetworkIcons_1 = require("./components/NetworkIcons");
|
|
2045
1941
|
Object.defineProperty(exports, "BrandSquareIcon", { enumerable: true, get: function () { return NetworkIcons_1.BrandSquareIcon; } });
|
|
2046
1942
|
Object.defineProperty(exports, "BrandCircleIcon", { enumerable: true, get: function () { return NetworkIcons_1.BrandCircleIcon; } });
|
|
@@ -3,9 +3,6 @@ export declare const ActiveTab: {
|
|
|
3
3
|
readonly Analytics: "analytics";
|
|
4
4
|
readonly Logs: "logs";
|
|
5
5
|
readonly Redux: "redux";
|
|
6
|
-
readonly Storage: "storage";
|
|
7
|
-
readonly Device: "device";
|
|
8
|
-
readonly Audit: "audit";
|
|
9
6
|
readonly Bundle: "bundle";
|
|
10
7
|
readonly Performance: "performance";
|
|
11
8
|
readonly Crash: "crash";
|
|
@@ -52,9 +49,6 @@ export declare const SettingsPage: {
|
|
|
52
49
|
readonly Logs: "logs";
|
|
53
50
|
readonly Analytics: "analytics";
|
|
54
51
|
readonly Redux: "redux";
|
|
55
|
-
readonly Storage: "storage";
|
|
56
|
-
readonly Device: "device";
|
|
57
|
-
readonly Audit: "audit";
|
|
58
52
|
readonly Bundle: "bundle";
|
|
59
53
|
readonly Performance: "performance";
|
|
60
54
|
readonly Crash: "crash";
|
|
@@ -62,7 +56,6 @@ export declare const SettingsPage: {
|
|
|
62
56
|
export type SettingsPage = (typeof SettingsPage)[keyof typeof SettingsPage] | null;
|
|
63
57
|
export declare const SettingsSubTab: {
|
|
64
58
|
readonly Module: "module";
|
|
65
|
-
readonly Limits: "limits";
|
|
66
59
|
readonly Ui: "ui";
|
|
67
60
|
};
|
|
68
61
|
export type SettingsSubTab = (typeof SettingsSubTab)[keyof typeof SettingsSubTab];
|
|
@@ -9,9 +9,6 @@ exports.ActiveTab = {
|
|
|
9
9
|
Analytics: 'analytics',
|
|
10
10
|
Logs: 'logs',
|
|
11
11
|
Redux: 'redux',
|
|
12
|
-
Storage: 'storage',
|
|
13
|
-
Device: 'device',
|
|
14
|
-
Audit: 'audit',
|
|
15
12
|
Bundle: 'bundle',
|
|
16
13
|
Performance: 'performance',
|
|
17
14
|
Crash: 'crash',
|
|
@@ -52,16 +49,12 @@ exports.SettingsPage = {
|
|
|
52
49
|
Logs: 'logs',
|
|
53
50
|
Analytics: 'analytics',
|
|
54
51
|
Redux: 'redux',
|
|
55
|
-
Storage: 'storage',
|
|
56
|
-
Device: 'device',
|
|
57
|
-
Audit: 'audit',
|
|
58
52
|
Bundle: 'bundle',
|
|
59
53
|
Performance: 'performance',
|
|
60
54
|
Crash: 'crash',
|
|
61
55
|
};
|
|
62
56
|
exports.SettingsSubTab = {
|
|
63
57
|
Module: 'module',
|
|
64
|
-
Limits: 'limits',
|
|
65
58
|
Ui: 'ui',
|
|
66
59
|
};
|
|
67
60
|
exports.LogFilter = {
|
|
@@ -3,64 +3,6 @@ import { ViewStyle } from 'react-native';
|
|
|
3
3
|
import { Animated, PanResponderInstance } from 'react-native';
|
|
4
4
|
import type { ActiveTab, BreadcrumbType, CrashType, GroupedListItem, LocalFilter, LogFilter, Method, SettingsPage, SettingsSubTab, SortOrder, StatusFilter } from './index';
|
|
5
5
|
export type SearchScope = 'all' | 'url' | 'reqBody' | 'resBody' | 'headers';
|
|
6
|
-
export interface StorageEntry {
|
|
7
|
-
key: string;
|
|
8
|
-
value: string;
|
|
9
|
-
sizeBytes: number;
|
|
10
|
-
isJson: boolean;
|
|
11
|
-
parsedJson?: any;
|
|
12
|
-
updatedAt: number;
|
|
13
|
-
}
|
|
14
|
-
export interface DeviceInfoData {
|
|
15
|
-
appName: string;
|
|
16
|
-
bundleId: string;
|
|
17
|
-
appVersion: string;
|
|
18
|
-
buildNumber: string;
|
|
19
|
-
reactNativeVersion: string;
|
|
20
|
-
jsEngine: string;
|
|
21
|
-
isHermes: boolean;
|
|
22
|
-
isFabric: boolean;
|
|
23
|
-
isTurboModule: boolean;
|
|
24
|
-
platform: 'ios' | 'android' | 'windows' | 'macos' | 'web';
|
|
25
|
-
osVersion: string;
|
|
26
|
-
deviceModel: string;
|
|
27
|
-
deviceId?: string;
|
|
28
|
-
isDevice: boolean;
|
|
29
|
-
screenWidth: number;
|
|
30
|
-
screenHeight: number;
|
|
31
|
-
screenScale: number;
|
|
32
|
-
screenFontScale: number;
|
|
33
|
-
statusBarHeight: number;
|
|
34
|
-
memoryMb?: number;
|
|
35
|
-
arch?: string;
|
|
36
|
-
locale?: string;
|
|
37
|
-
timeZone?: string;
|
|
38
|
-
}
|
|
39
|
-
export type AuditSeverity = 'critical' | 'warning' | 'info' | 'optimal';
|
|
40
|
-
export type AuditCategory = 'dependency' | 'typescript' | 'peer' | 'performance' | 'security';
|
|
41
|
-
export interface AuditIssue {
|
|
42
|
-
id: string;
|
|
43
|
-
title: string;
|
|
44
|
-
message: string;
|
|
45
|
-
severity: AuditSeverity;
|
|
46
|
-
category: AuditCategory;
|
|
47
|
-
packageName?: string;
|
|
48
|
-
currentVersion?: string;
|
|
49
|
-
requiredVersion?: string;
|
|
50
|
-
fixCommand?: string;
|
|
51
|
-
fixSnippet?: string;
|
|
52
|
-
timestamp: number;
|
|
53
|
-
}
|
|
54
|
-
export interface PackageHealthReport {
|
|
55
|
-
score: number;
|
|
56
|
-
grade: 'A+' | 'A' | 'B' | 'C' | 'D';
|
|
57
|
-
totalIssues: number;
|
|
58
|
-
criticalCount: number;
|
|
59
|
-
warningCount: number;
|
|
60
|
-
infoCount: number;
|
|
61
|
-
issues: AuditIssue[];
|
|
62
|
-
scannedAt: number;
|
|
63
|
-
}
|
|
64
6
|
export interface ParsedStackFrame {
|
|
65
7
|
method: string;
|
|
66
8
|
file: string;
|
|
@@ -222,8 +164,6 @@ export interface NetworkInspectorProps {
|
|
|
222
164
|
environment?: 'DEV' | 'UAT' | 'PrePROD' | 'PROD' | 'QA' | 'Staging' | string;
|
|
223
165
|
initialVisible?: boolean;
|
|
224
166
|
visible?: boolean;
|
|
225
|
-
initialTab?: ActiveTab;
|
|
226
|
-
enablePerformanceHud?: boolean;
|
|
227
167
|
}
|
|
228
168
|
export interface NavigationTrackerProps {
|
|
229
169
|
onStateChange: (state: any) => void;
|
|
@@ -236,8 +176,6 @@ export interface InspectorContextValue {
|
|
|
236
176
|
isEnabled: boolean;
|
|
237
177
|
appIcon?: any;
|
|
238
178
|
environment?: string;
|
|
239
|
-
isPerformanceHudEnabled: boolean;
|
|
240
|
-
setIsPerformanceHudEnabled: React.Dispatch<React.SetStateAction<boolean>>;
|
|
241
179
|
modalHeightPercent: number;
|
|
242
180
|
setModalHeightPercent: React.Dispatch<React.SetStateAction<number>>;
|
|
243
181
|
modalAnimationType: 'slide' | 'fade' | 'none';
|
|
@@ -367,17 +305,6 @@ export interface InspectorContextValue {
|
|
|
367
305
|
maxCrashLogs: number;
|
|
368
306
|
setMaxCrashLogs: React.Dispatch<React.SetStateAction<number>>;
|
|
369
307
|
clearAllCrashes: () => void;
|
|
370
|
-
storageEntries: StorageEntry[];
|
|
371
|
-
refreshStorageEntries: () => Promise<void>;
|
|
372
|
-
updateStorageEntry: (key: string, value: string) => Promise<void>;
|
|
373
|
-
deleteStorageEntry: (key: string) => Promise<void>;
|
|
374
|
-
clearAllStorageEntries: () => Promise<void>;
|
|
375
|
-
selectedStorageKey: string | null;
|
|
376
|
-
setSelectedStorageKey: React.Dispatch<React.SetStateAction<string | null>>;
|
|
377
|
-
deviceInfo: DeviceInfoData;
|
|
378
|
-
auditReport: PackageHealthReport;
|
|
379
|
-
refreshAuditReport: () => void;
|
|
380
|
-
logCustomAuditIssue: (issue: Omit<AuditIssue, 'id' | 'timestamp'>) => void;
|
|
381
308
|
settingsActiveSubTab: SettingsSubTab;
|
|
382
309
|
setSettingsActiveSubTab: React.Dispatch<React.SetStateAction<SettingsSubTab>>;
|
|
383
310
|
defaultTab: ActiveTab;
|
|
@@ -14,7 +14,7 @@ import { getTelemetryConsentStatus } from '../../helpers/telemetry';
|
|
|
14
14
|
import { UpdateAvailableModal } from './UpdateAvailableModal';
|
|
15
15
|
import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, } from '../NetworkIcons';
|
|
16
16
|
const InspectorHeader = React.memo(() => {
|
|
17
|
-
const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash,
|
|
17
|
+
const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
|
|
18
18
|
const [showUpdateModal, setShowUpdateModal] = React.useState(false);
|
|
19
19
|
const [isTelemetryActive, setIsTelemetryActive] = React.useState(false);
|
|
20
20
|
const telemetryPulseAnim = React.useRef(new Animated.Value(1)).current;
|
|
@@ -264,44 +264,38 @@ const InspectorHeader = React.memo(() => {
|
|
|
264
264
|
</Pressable>)}
|
|
265
265
|
</View>
|
|
266
266
|
|
|
267
|
-
{/* OS & NPM Version
|
|
267
|
+
{/* OS & NPM Version Representation */}
|
|
268
268
|
<View style={{
|
|
269
269
|
flexDirection: 'row',
|
|
270
270
|
alignItems: 'center',
|
|
271
271
|
gap: 5,
|
|
272
272
|
minWidth: 0,
|
|
273
273
|
}}>
|
|
274
|
-
{/* Unified Platform & Build Chip */}
|
|
275
274
|
<View style={{
|
|
276
275
|
flexDirection: 'row',
|
|
277
276
|
alignItems: 'center',
|
|
278
|
-
backgroundColor:
|
|
279
|
-
borderRadius:
|
|
280
|
-
paddingHorizontal: 6
|
|
281
|
-
paddingVertical: 2
|
|
282
|
-
gap: 4
|
|
277
|
+
backgroundColor: `${AppColors.white}1F`,
|
|
278
|
+
borderRadius: 5,
|
|
279
|
+
paddingHorizontal: 6,
|
|
280
|
+
paddingVertical: 2,
|
|
281
|
+
gap: 4,
|
|
283
282
|
borderWidth: 1,
|
|
284
|
-
borderColor:
|
|
283
|
+
borderColor: `${AppColors.white}2E`,
|
|
285
284
|
flexShrink: 0,
|
|
286
285
|
}}>
|
|
287
|
-
{Platform.OS === 'ios' ? (<AppleIcon color=
|
|
286
|
+
{Platform.OS === 'ios' ? (<AppleIcon color={`${AppColors.white}E6`} size={10}/>) : (<AndroidIcon color={`${AppColors.white}E6`} size={10}/>)}
|
|
288
287
|
<Text style={{
|
|
289
|
-
fontFamily: AppFonts.
|
|
288
|
+
fontFamily: AppFonts.interMedium,
|
|
290
289
|
fontSize: 9.5,
|
|
291
|
-
color:
|
|
290
|
+
color: `${AppColors.white}EB`,
|
|
292
291
|
letterSpacing: 0.1,
|
|
293
292
|
}} numberOfLines={1}>
|
|
294
293
|
{Platform.OS === 'ios'
|
|
295
|
-
? `iOS ${
|
|
296
|
-
|
|
297
|
-
: ''}`
|
|
298
|
-
: `Android ${String(deviceInfo?.osVersion || Platform.Version).replace(/^(android\s*)+/i, '').trim()}${deviceInfo?.buildNumber || deviceInfo?.appVersion
|
|
299
|
-
? ` (${deviceInfo.buildNumber || deviceInfo.appVersion})`
|
|
300
|
-
: ''}`}
|
|
294
|
+
? `iOS ${Platform.Version}`
|
|
295
|
+
: `Android ${Platform.Version}`}
|
|
301
296
|
</Text>
|
|
302
297
|
</View>
|
|
303
298
|
|
|
304
|
-
{/* Unified NPM Version Chip */}
|
|
305
299
|
<Pressable onPress={() => {
|
|
306
300
|
if (updateAvailable) {
|
|
307
301
|
setShowUpdateModal(true);
|
|
@@ -310,23 +304,26 @@ const InspectorHeader = React.memo(() => {
|
|
|
310
304
|
Linking.openURL('https://www.npmjs.com/package/react-native-inapp-inspector').catch(() => { });
|
|
311
305
|
}
|
|
312
306
|
}} style={{
|
|
313
|
-
backgroundColor: '
|
|
314
|
-
borderRadius:
|
|
315
|
-
paddingHorizontal: 6
|
|
316
|
-
paddingVertical: 2
|
|
307
|
+
backgroundColor: '#FFFFFF',
|
|
308
|
+
borderRadius: 5,
|
|
309
|
+
paddingHorizontal: 6,
|
|
310
|
+
paddingVertical: 2,
|
|
317
311
|
flexDirection: 'row',
|
|
318
312
|
alignItems: 'center',
|
|
319
313
|
gap: 4,
|
|
320
|
-
borderWidth: 1,
|
|
321
|
-
borderColor: 'rgba(255, 255, 255, 0.28)',
|
|
322
314
|
flexShrink: 0,
|
|
315
|
+
shadowColor: '#000000',
|
|
316
|
+
shadowOffset: { width: 0, height: 1 },
|
|
317
|
+
shadowOpacity: 0.15,
|
|
318
|
+
shadowRadius: 2,
|
|
319
|
+
elevation: 2,
|
|
323
320
|
}}>
|
|
324
|
-
<NpmIcon size={11} color="#
|
|
321
|
+
<NpmIcon size={11} color="#CB3837"/>
|
|
325
322
|
<Text style={{
|
|
326
323
|
fontFamily: AppFonts.interBold,
|
|
327
324
|
fontSize: 9.5,
|
|
328
|
-
color: '#
|
|
329
|
-
letterSpacing: 0.
|
|
325
|
+
color: '#CB3837',
|
|
326
|
+
letterSpacing: 0.2,
|
|
330
327
|
}} numberOfLines={1}>
|
|
331
328
|
v{LIB_VERSION}
|
|
332
329
|
</Text>
|
|
@@ -17,9 +17,6 @@ import BundleTab from './BundleTab';
|
|
|
17
17
|
import PerformanceTab from './PerformanceTab';
|
|
18
18
|
import CrashTab from './CrashTab';
|
|
19
19
|
import CrashDetail from './CrashDetail';
|
|
20
|
-
import StorageTab from './StorageTab';
|
|
21
|
-
import DeviceTab from './DeviceTab';
|
|
22
|
-
import AuditTab from './AuditTab';
|
|
23
20
|
import SettingsPanel from './SettingsPanel';
|
|
24
21
|
import TelemetryConsentModal from './TelemetryConsentModal';
|
|
25
22
|
import NpmUpdateToast from './NpmUpdateToast';
|
|
@@ -27,9 +24,8 @@ import Toast from '../Toast';
|
|
|
27
24
|
import styles from '../../styles';
|
|
28
25
|
import { AppColors } from '../../styles/AppColors';
|
|
29
26
|
import NavigationTracker from './NavigationTracker';
|
|
30
|
-
import PerformanceHud from './PerformanceHud';
|
|
31
27
|
const MainScreen = () => {
|
|
32
|
-
const { visible,
|
|
28
|
+
const { visible, modalAnimationType, closeModal, modalHeightPercent, selected, selectedEvent, selectedLog, selectedReduxSlice, selectedReduxAction, selectedCrash, settingsPage, activeTab, isReady, isEnabled, useNativeFab, hasNavigationContext, setNavState, } = useInspector();
|
|
33
29
|
const isDetailActive = (activeTab === 'apis' && selected != null) ||
|
|
34
30
|
(activeTab === 'analytics' && selectedEvent != null) ||
|
|
35
31
|
(activeTab === 'logs' && selectedLog != null) ||
|
|
@@ -70,16 +66,10 @@ const MainScreen = () => {
|
|
|
70
66
|
}).start();
|
|
71
67
|
}, [activeTab]);
|
|
72
68
|
return (<>
|
|
73
|
-
|
|
74
|
-
{(Platform.OS === 'ios' || Platform.OS === 'android') &&
|
|
69
|
+
{(Platform.OS === 'ios' || Platform.OS === 'android') &&
|
|
75
70
|
isEnabled &&
|
|
76
71
|
!visible &&
|
|
77
72
|
!useNativeFab && <FabLauncher />}
|
|
78
|
-
{isEnabled && !visible && isPerformanceHudEnabled && (<PerformanceHud visible={true} onPress={() => {
|
|
79
|
-
setVisible(true);
|
|
80
|
-
switchActiveTab('performance');
|
|
81
|
-
}}/>)}
|
|
82
|
-
</View>
|
|
83
73
|
<Modal visible={visible} animationType={modalAnimationType} transparent statusBarTranslucent={true}>
|
|
84
74
|
{visible && (<ErrorBoundary onClose={closeModal}>
|
|
85
75
|
<View style={styles.modalBackdrop}>
|
|
@@ -123,9 +113,6 @@ const MainScreen = () => {
|
|
|
123
113
|
{activeTab === 'logs' && <ConsoleTab />}
|
|
124
114
|
{activeTab === 'analytics' && <AnalyticsTab />}
|
|
125
115
|
{activeTab === 'redux' && <ReduxTab />}
|
|
126
|
-
{activeTab === 'storage' && <StorageTab />}
|
|
127
|
-
{activeTab === 'device' && <DeviceTab />}
|
|
128
|
-
{activeTab === 'audit' && <AuditTab />}
|
|
129
116
|
{activeTab === 'bundle' && <BundleTab />}
|
|
130
117
|
{activeTab === 'performance' && <PerformanceTab />}
|
|
131
118
|
{activeTab === 'crash' && <CrashTab />}
|