react-native-inapp-inspector 1.1.25 → 1.1.26
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/build.gradle +36 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +114 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.java +28 -0
- package/dist/commonjs/components/ErrorBoundary.d.ts +1 -1
- package/dist/commonjs/components/ErrorBoundary.js +9 -145
- package/dist/commonjs/components/Inspector/CrashDetail.d.ts +3 -0
- package/dist/commonjs/components/Inspector/CrashDetail.js +796 -0
- package/dist/commonjs/components/Inspector/CrashFilterModal.d.ts +20 -0
- package/dist/commonjs/components/Inspector/CrashFilterModal.js +597 -0
- package/dist/commonjs/components/Inspector/CrashTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/CrashTab.js +727 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +52 -23
- package/dist/commonjs/components/Inspector/LogDetail.js +4 -3
- package/dist/commonjs/components/Inspector/MainScreen.js +12 -3
- package/dist/commonjs/components/Inspector/SettingsPanel.js +90 -1
- package/dist/commonjs/components/Inspector/TabBar.js +15 -3
- package/dist/commonjs/components/NetworkIcons.d.ts +11 -0
- package/dist/commonjs/components/NetworkIcons.js +96 -1
- package/dist/commonjs/components/SegmentedTabs.js +2 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/analyticsLogger.js +70 -44
- package/dist/commonjs/customHooks/consoleLogger.d.ts +1 -0
- package/dist/commonjs/customHooks/consoleLogger.js +70 -6
- package/dist/commonjs/customHooks/crashHandler.d.ts +64 -0
- package/dist/commonjs/customHooks/crashHandler.js +681 -0
- package/dist/commonjs/customHooks/networkLogger.js +64 -48
- package/dist/commonjs/helpers/gaAnalyticsRegistry.js +1 -1
- package/dist/commonjs/i18n/locales/en.json +131 -0
- package/dist/commonjs/index.d.ts +3 -1
- package/dist/commonjs/index.js +95 -1
- package/dist/commonjs/types/enums.d.ts +41 -0
- package/dist/commonjs/types/enums.js +37 -1
- package/dist/commonjs/types/interfaces.d.ts +51 -1
- package/dist/esm/components/ErrorBoundary.d.ts +1 -1
- package/dist/esm/components/ErrorBoundary.js +10 -113
- package/dist/esm/components/Inspector/CrashDetail.d.ts +3 -0
- package/dist/esm/components/Inspector/CrashDetail.js +758 -0
- package/dist/esm/components/Inspector/CrashFilterModal.d.ts +20 -0
- package/dist/esm/components/Inspector/CrashFilterModal.js +557 -0
- package/dist/esm/components/Inspector/CrashTab.d.ts +3 -0
- package/dist/esm/components/Inspector/CrashTab.js +689 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +52 -23
- package/dist/esm/components/Inspector/LogDetail.js +4 -3
- package/dist/esm/components/Inspector/MainScreen.js +12 -3
- package/dist/esm/components/Inspector/SettingsPanel.js +91 -2
- package/dist/esm/components/Inspector/TabBar.js +16 -4
- package/dist/esm/components/NetworkIcons.d.ts +11 -0
- package/dist/esm/components/NetworkIcons.js +83 -0
- package/dist/esm/components/SegmentedTabs.js +2 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/analyticsLogger.js +70 -44
- package/dist/esm/customHooks/consoleLogger.d.ts +1 -0
- package/dist/esm/customHooks/consoleLogger.js +68 -5
- package/dist/esm/customHooks/crashHandler.d.ts +64 -0
- package/dist/esm/customHooks/crashHandler.js +659 -0
- package/dist/esm/customHooks/networkLogger.js +64 -48
- package/dist/esm/helpers/gaAnalyticsRegistry.js +1 -1
- package/dist/esm/i18n/locales/en.json +131 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +73 -1
- package/dist/esm/types/enums.d.ts +41 -0
- package/dist/esm/types/enums.js +36 -0
- package/dist/esm/types/interfaces.d.ts +51 -1
- package/ios/NetworkInspectorModule.h +6 -0
- package/ios/NetworkInspectorModule.m +125 -0
- package/package.json +5 -2
- package/react-native-inapp-inspector.podspec +18 -0
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.addAxiosInterceptors = exports.setupNetworkLogger = exports.getNetworkLogs = exports.clearNetworkLogs = exports.subscribeNetworkLogs = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const crashHandler_1 = require("./crashHandler");
|
|
8
9
|
let logs = [];
|
|
9
10
|
let listeners = [];
|
|
10
11
|
let counter = 0;
|
|
@@ -151,65 +152,76 @@ const setupNetworkLogger = () => {
|
|
|
151
152
|
const finalUrl = typeof url === "string" ? url : url?.url;
|
|
152
153
|
if (shouldIgnoreUrl(finalUrl))
|
|
153
154
|
return originalFetch(url, options);
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
addOrUpdateLog({
|
|
157
|
-
id,
|
|
158
|
-
url: finalUrl,
|
|
159
|
-
method,
|
|
160
|
-
startTime: start,
|
|
161
|
-
caller,
|
|
162
|
-
request: method === "GET" ? undefined : parseRequestData(options?.body),
|
|
163
|
-
requestHeaders,
|
|
164
|
-
});
|
|
155
|
+
let caller = "Unknown";
|
|
156
|
+
let requestHeaders;
|
|
165
157
|
try {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
const responseHeaders = normaliseHeaders(response.headers);
|
|
169
|
-
let data = null;
|
|
170
|
-
const contentType = responseHeaders?.["content-type"] ||
|
|
171
|
-
responseHeaders?.["Content-Type"] ||
|
|
172
|
-
"";
|
|
173
|
-
if (contentType.includes("image/")) {
|
|
174
|
-
data = "[Image Data]";
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
try {
|
|
178
|
-
const clone = response.clone();
|
|
179
|
-
const text = await clone.text();
|
|
180
|
-
try {
|
|
181
|
-
data = JSON.parse(text);
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
data = text;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
catch { }
|
|
188
|
-
}
|
|
158
|
+
requestHeaders = normaliseHeaders(options?.headers);
|
|
159
|
+
caller = getCallerFromStack(); // ✅ Capture call line
|
|
189
160
|
addOrUpdateLog({
|
|
190
161
|
id,
|
|
191
162
|
url: finalUrl,
|
|
192
163
|
method,
|
|
193
|
-
status: response.status,
|
|
194
|
-
response: data,
|
|
195
|
-
duration,
|
|
196
164
|
startTime: start,
|
|
197
165
|
caller,
|
|
198
|
-
|
|
166
|
+
request: method === "GET" ? undefined : parseRequestData(options?.body),
|
|
167
|
+
requestHeaders,
|
|
199
168
|
});
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
try {
|
|
172
|
+
const response = await originalFetch(url, options);
|
|
173
|
+
const duration = Date.now() - start;
|
|
174
|
+
try {
|
|
175
|
+
const responseHeaders = normaliseHeaders(response.headers);
|
|
176
|
+
let data = null;
|
|
177
|
+
const contentType = responseHeaders?.["content-type"] ||
|
|
178
|
+
responseHeaders?.["Content-Type"] ||
|
|
179
|
+
"";
|
|
180
|
+
if (contentType.includes("image/")) {
|
|
181
|
+
data = "[Image Data]";
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
try {
|
|
185
|
+
const clone = response.clone();
|
|
186
|
+
const text = await clone.text();
|
|
187
|
+
try {
|
|
188
|
+
data = JSON.parse(text);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
data = text;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch { }
|
|
195
|
+
}
|
|
196
|
+
addOrUpdateLog({
|
|
197
|
+
id,
|
|
198
|
+
url: finalUrl,
|
|
199
|
+
method,
|
|
200
|
+
status: response.status,
|
|
201
|
+
response: data,
|
|
202
|
+
duration,
|
|
203
|
+
startTime: start,
|
|
204
|
+
caller,
|
|
205
|
+
responseHeaders,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
catch { }
|
|
200
209
|
return response;
|
|
201
210
|
}
|
|
202
211
|
catch (error) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
try {
|
|
213
|
+
addOrUpdateLog({
|
|
214
|
+
id,
|
|
215
|
+
url: finalUrl,
|
|
216
|
+
method,
|
|
217
|
+
status: 0,
|
|
218
|
+
startTime: start,
|
|
219
|
+
response: error,
|
|
220
|
+
caller,
|
|
221
|
+
duration: Date.now() - start,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
catch { }
|
|
213
225
|
throw error;
|
|
214
226
|
}
|
|
215
227
|
};
|
|
@@ -231,6 +243,10 @@ const setupNetworkLogger = () => {
|
|
|
231
243
|
catch (_e) {
|
|
232
244
|
// Axios not available — fetch-only mode
|
|
233
245
|
}
|
|
246
|
+
try {
|
|
247
|
+
(0, crashHandler_1.setupGlobalCrashHandler)();
|
|
248
|
+
}
|
|
249
|
+
catch { }
|
|
234
250
|
globalThis.__NETWORK_LOGGER_INITIALIZED__ = true;
|
|
235
251
|
};
|
|
236
252
|
exports.setupNetworkLogger = setupNetworkLogger;
|
|
@@ -122,7 +122,7 @@ tryInspectRuntimeFirebaseAnalytics();
|
|
|
122
122
|
* 4. Semantic pattern & prefix analysis
|
|
123
123
|
*/
|
|
124
124
|
const getEventCategory = (name, params) => {
|
|
125
|
-
if (!name)
|
|
125
|
+
if (!name || typeof name !== 'string')
|
|
126
126
|
return 'custom';
|
|
127
127
|
const cleanName = name.trim().toLowerCase();
|
|
128
128
|
// 1. Run through registered dynamic plugins
|
|
@@ -582,5 +582,136 @@
|
|
|
582
582
|
"retry": "Try Again",
|
|
583
583
|
"reset": "Reset",
|
|
584
584
|
"close": "Close"
|
|
585
|
+
},
|
|
586
|
+
"crash": {
|
|
587
|
+
"title": "Crash",
|
|
588
|
+
"searchPlaceholder": "Search error, message, stack...",
|
|
589
|
+
"searchDetailPlaceholder": "Search in trace or JSON...",
|
|
590
|
+
"statCrashes": "Crashes",
|
|
591
|
+
"statFatal": "Fatal",
|
|
592
|
+
"statJsErrors": "JS Errors",
|
|
593
|
+
"statPromises": "Promises",
|
|
594
|
+
"statRender": "Render",
|
|
595
|
+
"statNative": "Native",
|
|
596
|
+
"filterAll": "All",
|
|
597
|
+
"filterFatal": "Fatal",
|
|
598
|
+
"filterJsError": "JS Error",
|
|
599
|
+
"filterPromise": "Promise",
|
|
600
|
+
"filterRender": "Render",
|
|
601
|
+
"filterNative": "Native",
|
|
602
|
+
"fatalBadge": "FATAL",
|
|
603
|
+
"handledBadge": "HANDLED",
|
|
604
|
+
"fatalCrash": "FATAL CRASH",
|
|
605
|
+
"handledException": "HANDLED EXCEPTION",
|
|
606
|
+
"unknownException": "Unknown Exception",
|
|
607
|
+
"report": "Report",
|
|
608
|
+
"inspect": "Inspect",
|
|
609
|
+
"copyReport": "Copy Report",
|
|
610
|
+
"copied": "Copied",
|
|
611
|
+
"clearTitle": "Clear Crash History",
|
|
612
|
+
"clearMessage": "Are you sure you want to clear all intercepted crash records?",
|
|
613
|
+
"clearCancel": "Cancel",
|
|
614
|
+
"clearConfirm": "Clear All",
|
|
615
|
+
"emptyTitle": "Zero Crashes Detected",
|
|
616
|
+
"emptySubtitle": "Global crash guard is active. All native and JavaScript exceptions are intercepted and protected.",
|
|
617
|
+
"emptySearchSubtitle": "No crash entries matched your search query.",
|
|
618
|
+
"tabStack": "Stack ({{count}})",
|
|
619
|
+
"tabDiagnostics": "Diagnostics",
|
|
620
|
+
"tabTrail": "Trail ({{count}})",
|
|
621
|
+
"tabRawJson": "Raw JSON",
|
|
622
|
+
"appFrames": "App Frames ({{count}})",
|
|
623
|
+
"allFrames": "All Frames ({{count}})",
|
|
624
|
+
"frameApp": "APP",
|
|
625
|
+
"frameLib": "LIB",
|
|
626
|
+
"anonymous": "<anonymous>",
|
|
627
|
+
"noStackTrace": "No stack trace captured for this event.",
|
|
628
|
+
"deviceEnvironment": "Device & Environment",
|
|
629
|
+
"platform": "Platform",
|
|
630
|
+
"osVersion": "OS Version",
|
|
631
|
+
"reactNative": "React Native",
|
|
632
|
+
"jsEngine": "JS Engine",
|
|
633
|
+
"hermesEngine": "Hermes Engine",
|
|
634
|
+
"jsc": "JSC",
|
|
635
|
+
"architecture": "Architecture",
|
|
636
|
+
"fabricNewArch": "Fabric (New Arch)",
|
|
637
|
+
"paperLegacy": "Paper (Legacy)",
|
|
638
|
+
"appState": "App State",
|
|
639
|
+
"jsHeapMemory": "JS Heap Memory",
|
|
640
|
+
"usedHeap": "Used Heap",
|
|
641
|
+
"totalHeap": "Total Heap",
|
|
642
|
+
"noBreadcrumbs": "No breadcrumb events recorded prior to this crash.",
|
|
643
|
+
"simNativeMessage": "Simulated native fatal exception",
|
|
644
|
+
"simPromiseMessage": "Simulated unhandled promise rejection",
|
|
645
|
+
"simRenderMessage": "Simulated React component render error",
|
|
646
|
+
"simJsMessage": "Simulated JavaScript exception",
|
|
647
|
+
"reportTitle": "CRASH DIAGNOSTIC REPORT",
|
|
648
|
+
"reportErrorName": "Error Name:",
|
|
649
|
+
"reportMessage": "Message:",
|
|
650
|
+
"reportType": "Type:",
|
|
651
|
+
"reportFatalYes": "YES (Fatal)",
|
|
652
|
+
"reportFatalNo": "NO (Caught/Handled)",
|
|
653
|
+
"reportFatal": "Fatal:",
|
|
654
|
+
"reportTimestamp": "Timestamp:",
|
|
655
|
+
"reportUptime": "App Uptime:",
|
|
656
|
+
"reportUptimeValue": "{{seconds}} seconds",
|
|
657
|
+
"reportPlatform": "Platform:",
|
|
658
|
+
"reportReactNative": "React Native:",
|
|
659
|
+
"reportHermes": "Hermes:",
|
|
660
|
+
"reportEnabled": "Enabled",
|
|
661
|
+
"reportDisabled": "Disabled",
|
|
662
|
+
"reportArchitecture": "Architecture:",
|
|
663
|
+
"reportFabricNew": "Fabric (New)",
|
|
664
|
+
"reportPaperLegacy": "Paper (Legacy)",
|
|
665
|
+
"reportScreenSize": "Screen Size:",
|
|
666
|
+
"reportAppState": "App State:",
|
|
667
|
+
"reportJsMemory": "JS Memory:",
|
|
668
|
+
"reportStackTrace": "STACK TRACE:",
|
|
669
|
+
"reportNoStackTrace": "No stack trace available",
|
|
670
|
+
"reportComponentHierarchy": "COMPONENT HIERARCHY:",
|
|
671
|
+
"reportRecentBreadcrumbs": "RECENT BREADCRUMBS:",
|
|
672
|
+
"mdReportTitle": "🚨 Crash Report: {{name}}",
|
|
673
|
+
"mdStackTrace": "📦 Stack Trace",
|
|
674
|
+
"mdComponentHierarchy": "🌲 Component Hierarchy",
|
|
675
|
+
"mdRecentBreadcrumbs": "👣 Recent Breadcrumbs",
|
|
676
|
+
"mdSeverityFatal": "FATAL",
|
|
677
|
+
"mdSeverityHandled": "HANDLED",
|
|
678
|
+
"breadcrumbNavigation": "Navigated from \"{{from}}\" to \"{{to}}\"",
|
|
679
|
+
"breadcrumbAction": "Action: {{actionType}}",
|
|
680
|
+
"unknown": "Unknown",
|
|
681
|
+
"runtimeException": "Runtime Exception",
|
|
682
|
+
"logFatalCrash": "Fatal Crash",
|
|
683
|
+
"logUnhandledError": "Unhandled Error",
|
|
684
|
+
"errorNameFatal": "FatalError",
|
|
685
|
+
"errorNameUnhandled": "UnhandledException",
|
|
686
|
+
"nativeCrashTitle": "Native Crash",
|
|
687
|
+
"nativeUncaughtException": "Native Uncaught Exception",
|
|
688
|
+
"nativeException": "Native Exception",
|
|
689
|
+
"unhandledPromiseRejection": "Unhandled Promise Rejection",
|
|
690
|
+
"filterTitle": "Crash Filters",
|
|
691
|
+
"filterSubtitle": "Diagnostics & Reports",
|
|
692
|
+
"filterReset": "Reset All",
|
|
693
|
+
"filterTypeSection": "CRASH TYPE",
|
|
694
|
+
"filterTypeAll": "All Types",
|
|
695
|
+
"filterTimeSection": "TIME HORIZON",
|
|
696
|
+
"filterTimeAll": "All Time",
|
|
697
|
+
"filterTime15m": "Last 15 mins",
|
|
698
|
+
"filterTime1h": "Last 1 hour",
|
|
699
|
+
"filterTime24h": "Last 24 hours",
|
|
700
|
+
"filterTime7d": "Last 7 days",
|
|
701
|
+
"filterPlatformSection": "PLATFORM",
|
|
702
|
+
"filterPlatformAll": "All Platforms",
|
|
703
|
+
"filterPlatformIos": "iOS",
|
|
704
|
+
"filterPlatformAndroid": "Android",
|
|
705
|
+
"filterEngineSection": "JS ENGINE",
|
|
706
|
+
"filterEngineAll": "All Engines",
|
|
707
|
+
"filterEngineHermes": "Hermes",
|
|
708
|
+
"filterSortSection": "SORT ORDER",
|
|
709
|
+
"filterSortNewest": "Newest First (Default)",
|
|
710
|
+
"filterSortOldest": "Oldest First",
|
|
711
|
+
"filterDiscard": "Discard",
|
|
712
|
+
"filterApply": "Apply ({{count}} Crashes)",
|
|
713
|
+
"frameCopy": "Copy",
|
|
714
|
+
"frameCopied": "Copied",
|
|
715
|
+
"componentHierarchy": "Component Hierarchy"
|
|
585
716
|
}
|
|
586
717
|
}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -5,9 +5,11 @@ export default NetworkInspectorWrapper;
|
|
|
5
5
|
export { setupNetworkLogger, clearNetworkLogs, subscribeNetworkLogs, addAxiosInterceptors, } from './customHooks/networkLogger';
|
|
6
6
|
export { setupConsoleLogger, clearConsoleLogs, subscribeConsoleLogs, } from './customHooks/consoleLogger';
|
|
7
7
|
export { setupAnalyticsLogger, logAnalyticsEvent, subscribeAnalyticsEvents, clearAnalyticsEvents, getCurrentUserProperties, getCurrentUserId, getDefaultEventParameters, getCollectionEnabled, } from './customHooks/analyticsLogger';
|
|
8
|
+
export { setupGlobalCrashHandler, subscribeCrashEvents, emitCrashEvent, getCrashRecords, clearCrashRecords, simulateTestCrash, exportCrashReport, parseCrashStackTrace, recordCustomCrash, addCrashBreadcrumb, recordNavigationBreadcrumb, recordNetworkBreadcrumb, recordReduxBreadcrumb, recordUserActionBreadcrumb, computeCrashFingerprint, type CrashEventPayload, } from './customHooks/crashHandler';
|
|
9
|
+
export { default as CrashTab } from './components/Inspector/CrashTab';
|
|
8
10
|
export { default as ErrorBoundary } from './components/ErrorBoundary';
|
|
9
11
|
export { connectReduxStore, inspectorReduxMiddleware, getReduxState, subscribeReduxState, getActionHistory, clearActionHistory, getLastActionForReducer, } from './customHooks/reduxLogger';
|
|
10
12
|
export { getEventCategory, registerGAPlugin, type GAPlugin, } from './helpers/gaAnalyticsRegistry';
|
|
11
13
|
export { usePerformanceTracker, logPerformanceEvent, clearPerformanceEvents, subscribePerformanceEvents, getPerformanceEvents, } from './customHooks/performanceTracker';
|
|
12
14
|
export { InspectLog, InspectTrackTime, InspectCatch, type InspectLogOptions, } from './decorators';
|
|
13
|
-
export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, ConsoleLogType, AnalyticsEventSource, GAEventCategory, StackFrameType, DiffResultType, BundleSubTab, PerformanceSubTab, } from './types';
|
|
15
|
+
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
|
@@ -36,7 +36,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
39
|
+
exports.ActiveTab = exports.InspectCatch = exports.InspectTrackTime = exports.InspectLog = exports.getPerformanceEvents = exports.subscribePerformanceEvents = exports.clearPerformanceEvents = exports.logPerformanceEvent = exports.usePerformanceTracker = exports.registerGAPlugin = exports.getEventCategory = exports.getLastActionForReducer = exports.clearActionHistory = exports.getActionHistory = exports.subscribeReduxState = exports.getReduxState = exports.inspectorReduxMiddleware = exports.connectReduxStore = exports.ErrorBoundary = exports.CrashTab = exports.computeCrashFingerprint = exports.recordUserActionBreadcrumb = exports.recordReduxBreadcrumb = exports.recordNetworkBreadcrumb = exports.recordNavigationBreadcrumb = exports.addCrashBreadcrumb = exports.recordCustomCrash = exports.parseCrashStackTrace = exports.exportCrashReport = exports.simulateTestCrash = exports.clearCrashRecords = exports.getCrashRecords = exports.emitCrashEvent = exports.subscribeCrashEvents = exports.setupGlobalCrashHandler = exports.getCollectionEnabled = exports.getDefaultEventParameters = exports.getCurrentUserId = exports.getCurrentUserProperties = exports.clearAnalyticsEvents = exports.subscribeAnalyticsEvents = exports.logAnalyticsEvent = exports.setupAnalyticsLogger = exports.subscribeConsoleLogs = exports.clearConsoleLogs = exports.setupConsoleLogger = exports.addAxiosInterceptors = exports.subscribeNetworkLogs = exports.clearNetworkLogs = exports.setupNetworkLogger = void 0;
|
|
40
|
+
exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = void 0;
|
|
40
41
|
const react_1 = __importStar(require("react"));
|
|
41
42
|
const react_native_1 = require("react-native");
|
|
42
43
|
const native_1 = require("@react-navigation/native");
|
|
@@ -55,6 +56,8 @@ const networkLogger_1 = require("./customHooks/networkLogger");
|
|
|
55
56
|
// Console
|
|
56
57
|
const consoleLogger_1 = require("./customHooks/consoleLogger");
|
|
57
58
|
const logFilters_1 = require("./customHooks/logFilters");
|
|
59
|
+
// Crash Protection
|
|
60
|
+
const crashHandler_1 = require("./customHooks/crashHandler");
|
|
58
61
|
const analyticsLogger_1 = require("./customHooks/analyticsLogger");
|
|
59
62
|
const reduxLogger_1 = require("./customHooks/reduxLogger");
|
|
60
63
|
const constants_1 = require("./constants");
|
|
@@ -128,6 +131,14 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
128
131
|
const latestAnalyticsEventsRef = (0, react_1.useRef)([]);
|
|
129
132
|
const [lastReadLogsCount, setLastReadLogsCount] = (0, react_1.useState)(0);
|
|
130
133
|
const [lastReadApisCount, setLastReadApisCount] = (0, react_1.useState)(0);
|
|
134
|
+
const [lastReadCrashesCount, setLastReadCrashesCount] = (0, react_1.useState)(0);
|
|
135
|
+
// ─── Crash state ───────────────────────────────────────────────────────────
|
|
136
|
+
const [crashRecords, setCrashRecords] = (0, react_1.useState)(() => (0, crashHandler_1.getCrashRecords)());
|
|
137
|
+
const [selectedCrash, setSelectedCrash] = (0, react_1.useState)(null);
|
|
138
|
+
const [maxCrashLogs, setMaxCrashLogs] = (0, react_1.useState)(100);
|
|
139
|
+
(0, react_1.useEffect)(() => {
|
|
140
|
+
(0, crashHandler_1.setMaxCrashLogsLimit)(maxCrashLogs);
|
|
141
|
+
}, [maxCrashLogs]);
|
|
131
142
|
(0, react_1.useEffect)(() => {
|
|
132
143
|
if (visible) {
|
|
133
144
|
if (activeTab === 'apis') {
|
|
@@ -136,6 +147,9 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
136
147
|
if (activeTab === 'logs') {
|
|
137
148
|
setLastReadLogsCount(consoleLogs.length);
|
|
138
149
|
}
|
|
150
|
+
if (activeTab === 'crash') {
|
|
151
|
+
setLastReadCrashesCount(crashRecords.length);
|
|
152
|
+
}
|
|
139
153
|
}
|
|
140
154
|
}, [visible]);
|
|
141
155
|
(0, react_1.useEffect)(() => {
|
|
@@ -148,6 +162,11 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
148
162
|
setLastReadLogsCount(consoleLogs.length);
|
|
149
163
|
}
|
|
150
164
|
}, [activeTab, consoleLogs.length]);
|
|
165
|
+
(0, react_1.useEffect)(() => {
|
|
166
|
+
if (activeTab === 'crash') {
|
|
167
|
+
setLastReadCrashesCount(crashRecords.length);
|
|
168
|
+
}
|
|
169
|
+
}, [activeTab, crashRecords.length]);
|
|
151
170
|
const [maxConsoleLogs, setMaxConsoleLogs] = (0, react_1.useState)(200);
|
|
152
171
|
const [showConsoleLevels, setShowConsoleLevels] = (0, react_1.useState)({
|
|
153
172
|
info: true,
|
|
@@ -190,6 +209,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
190
209
|
redux: false,
|
|
191
210
|
bundle: false,
|
|
192
211
|
performance: false,
|
|
212
|
+
crash: true,
|
|
193
213
|
});
|
|
194
214
|
const [maxNetworkLogs, setMaxNetworkLogs] = (0, react_1.useState)(100);
|
|
195
215
|
const [reduxAutoRefresh, setReduxAutoRefreshState] = (0, react_1.useState)(true);
|
|
@@ -210,8 +230,10 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
210
230
|
redux: false,
|
|
211
231
|
bundle: false,
|
|
212
232
|
performance: false,
|
|
233
|
+
crash: true,
|
|
213
234
|
});
|
|
214
235
|
setDefaultTab('apis');
|
|
236
|
+
setMaxCrashLogs(100);
|
|
215
237
|
setMaxNetworkLogs(100);
|
|
216
238
|
setMaxConsoleLogs(200);
|
|
217
239
|
setShowConsoleLevels({
|
|
@@ -244,6 +266,9 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
244
266
|
...prev,
|
|
245
267
|
...saved.tabVisibility,
|
|
246
268
|
apis: true, // APIs is always required
|
|
269
|
+
crash: saved.tabVisibility.crash !== undefined
|
|
270
|
+
? saved.tabVisibility.crash
|
|
271
|
+
: true,
|
|
247
272
|
}));
|
|
248
273
|
if (saved.defaultTab)
|
|
249
274
|
setDefaultTab(saved.defaultTab);
|
|
@@ -269,6 +294,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
269
294
|
redux: false,
|
|
270
295
|
bundle: false,
|
|
271
296
|
performance: false,
|
|
297
|
+
crash: true,
|
|
272
298
|
},
|
|
273
299
|
...(saved.tabVisibility || {}),
|
|
274
300
|
apis: true,
|
|
@@ -649,6 +675,22 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
649
675
|
(0, networkLogger_1.clearNetworkLogs)();
|
|
650
676
|
(0, consoleLogger_1.setupConsoleLogger)();
|
|
651
677
|
(0, analyticsLogger_1.autoSetupAnalyticsLogger)();
|
|
678
|
+
(0, crashHandler_1.setupGlobalCrashHandler)();
|
|
679
|
+
const unsubscribeCrash = (0, crashHandler_1.subscribeCrashEvents)(crashInfo => {
|
|
680
|
+
if (crashInfo.message === '__CLEARED__') {
|
|
681
|
+
setCrashRecords([]);
|
|
682
|
+
setSelectedCrash(null);
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
685
|
+
const updated = (0, crashHandler_1.getCrashRecords)();
|
|
686
|
+
setCrashRecords(updated);
|
|
687
|
+
});
|
|
688
|
+
// Sync crashes recorded before this subscription ran (e.g. a render crash
|
|
689
|
+
// during the very first commit, which fires before effects are mounted).
|
|
690
|
+
const pendingCrashes = (0, crashHandler_1.getCrashRecords)();
|
|
691
|
+
if (pendingCrashes.length > 0) {
|
|
692
|
+
setCrashRecords(pendingCrashes);
|
|
693
|
+
}
|
|
652
694
|
let timeoutId;
|
|
653
695
|
let isFirstNetworkCall = true;
|
|
654
696
|
const unsubscribe = (0, networkLogger_1.subscribeNetworkLogs)((raw) => {
|
|
@@ -760,6 +802,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
760
802
|
unsubscribeConsole();
|
|
761
803
|
clearTimeout(consoleTimeoutId);
|
|
762
804
|
unsubscribeRedux();
|
|
805
|
+
unsubscribeCrash();
|
|
763
806
|
};
|
|
764
807
|
}, []);
|
|
765
808
|
(0, react_1.useEffect)(() => {
|
|
@@ -1249,6 +1292,21 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
1249
1292
|
]);
|
|
1250
1293
|
return;
|
|
1251
1294
|
}
|
|
1295
|
+
if (activeTab === 'crash') {
|
|
1296
|
+
react_native_1.Alert.alert('Clear Crash History', 'Are you sure you want to clear all intercepted crash records?', [
|
|
1297
|
+
{ text: 'Cancel', style: 'cancel' },
|
|
1298
|
+
{
|
|
1299
|
+
text: 'Clear All',
|
|
1300
|
+
onPress: () => {
|
|
1301
|
+
(0, crashHandler_1.clearCrashRecords)();
|
|
1302
|
+
setCrashRecords([]);
|
|
1303
|
+
setSelectedCrash(null);
|
|
1304
|
+
},
|
|
1305
|
+
style: 'destructive',
|
|
1306
|
+
},
|
|
1307
|
+
]);
|
|
1308
|
+
return;
|
|
1309
|
+
}
|
|
1252
1310
|
// Default: APIs tab. Only clears NETWORK logs — never touches the other tabs.
|
|
1253
1311
|
if (selectedLogs.size > 0) {
|
|
1254
1312
|
setLogs(prev => prev.filter(l => !selectedLogs.has(l.id)));
|
|
@@ -1430,6 +1488,19 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
|
|
|
1430
1488
|
setSelectedReduxAction,
|
|
1431
1489
|
reduxActiveSubTab,
|
|
1432
1490
|
setReduxActiveSubTab,
|
|
1491
|
+
// ─── Crash ───────────────────────────────────────────────────────────
|
|
1492
|
+
crashRecords,
|
|
1493
|
+
setCrashRecords,
|
|
1494
|
+
selectedCrash,
|
|
1495
|
+
setSelectedCrash,
|
|
1496
|
+
lastReadCrashesCount,
|
|
1497
|
+
maxCrashLogs,
|
|
1498
|
+
setMaxCrashLogs,
|
|
1499
|
+
clearAllCrashes: () => {
|
|
1500
|
+
(0, crashHandler_1.clearCrashRecords)();
|
|
1501
|
+
setCrashRecords([]);
|
|
1502
|
+
setSelectedCrash(null);
|
|
1503
|
+
},
|
|
1433
1504
|
// ─── Settings ───────────────────────────────────────────────────────
|
|
1434
1505
|
settingsActiveSubTab,
|
|
1435
1506
|
setSettingsActiveSubTab,
|
|
@@ -1488,6 +1559,24 @@ Object.defineProperty(exports, "getCurrentUserProperties", { enumerable: true, g
|
|
|
1488
1559
|
Object.defineProperty(exports, "getCurrentUserId", { enumerable: true, get: function () { return analyticsLogger_2.getCurrentUserId; } });
|
|
1489
1560
|
Object.defineProperty(exports, "getDefaultEventParameters", { enumerable: true, get: function () { return analyticsLogger_2.getDefaultEventParameters; } });
|
|
1490
1561
|
Object.defineProperty(exports, "getCollectionEnabled", { enumerable: true, get: function () { return analyticsLogger_2.getCollectionEnabled; } });
|
|
1562
|
+
var crashHandler_2 = require("./customHooks/crashHandler");
|
|
1563
|
+
Object.defineProperty(exports, "setupGlobalCrashHandler", { enumerable: true, get: function () { return crashHandler_2.setupGlobalCrashHandler; } });
|
|
1564
|
+
Object.defineProperty(exports, "subscribeCrashEvents", { enumerable: true, get: function () { return crashHandler_2.subscribeCrashEvents; } });
|
|
1565
|
+
Object.defineProperty(exports, "emitCrashEvent", { enumerable: true, get: function () { return crashHandler_2.emitCrashEvent; } });
|
|
1566
|
+
Object.defineProperty(exports, "getCrashRecords", { enumerable: true, get: function () { return crashHandler_2.getCrashRecords; } });
|
|
1567
|
+
Object.defineProperty(exports, "clearCrashRecords", { enumerable: true, get: function () { return crashHandler_2.clearCrashRecords; } });
|
|
1568
|
+
Object.defineProperty(exports, "simulateTestCrash", { enumerable: true, get: function () { return crashHandler_2.simulateTestCrash; } });
|
|
1569
|
+
Object.defineProperty(exports, "exportCrashReport", { enumerable: true, get: function () { return crashHandler_2.exportCrashReport; } });
|
|
1570
|
+
Object.defineProperty(exports, "parseCrashStackTrace", { enumerable: true, get: function () { return crashHandler_2.parseCrashStackTrace; } });
|
|
1571
|
+
Object.defineProperty(exports, "recordCustomCrash", { enumerable: true, get: function () { return crashHandler_2.recordCustomCrash; } });
|
|
1572
|
+
Object.defineProperty(exports, "addCrashBreadcrumb", { enumerable: true, get: function () { return crashHandler_2.addCrashBreadcrumb; } });
|
|
1573
|
+
Object.defineProperty(exports, "recordNavigationBreadcrumb", { enumerable: true, get: function () { return crashHandler_2.recordNavigationBreadcrumb; } });
|
|
1574
|
+
Object.defineProperty(exports, "recordNetworkBreadcrumb", { enumerable: true, get: function () { return crashHandler_2.recordNetworkBreadcrumb; } });
|
|
1575
|
+
Object.defineProperty(exports, "recordReduxBreadcrumb", { enumerable: true, get: function () { return crashHandler_2.recordReduxBreadcrumb; } });
|
|
1576
|
+
Object.defineProperty(exports, "recordUserActionBreadcrumb", { enumerable: true, get: function () { return crashHandler_2.recordUserActionBreadcrumb; } });
|
|
1577
|
+
Object.defineProperty(exports, "computeCrashFingerprint", { enumerable: true, get: function () { return crashHandler_2.computeCrashFingerprint; } });
|
|
1578
|
+
var CrashTab_1 = require("./components/Inspector/CrashTab");
|
|
1579
|
+
Object.defineProperty(exports, "CrashTab", { enumerable: true, get: function () { return __importDefault(CrashTab_1).default; } });
|
|
1491
1580
|
var ErrorBoundary_2 = require("./components/ErrorBoundary");
|
|
1492
1581
|
Object.defineProperty(exports, "ErrorBoundary", { enumerable: true, get: function () { return __importDefault(ErrorBoundary_2).default; } });
|
|
1493
1582
|
var reduxLogger_2 = require("./customHooks/reduxLogger");
|
|
@@ -1528,3 +1617,8 @@ Object.defineProperty(exports, "StackFrameType", { enumerable: true, get: functi
|
|
|
1528
1617
|
Object.defineProperty(exports, "DiffResultType", { enumerable: true, get: function () { return types_1.DiffResultType; } });
|
|
1529
1618
|
Object.defineProperty(exports, "BundleSubTab", { enumerable: true, get: function () { return types_1.BundleSubTab; } });
|
|
1530
1619
|
Object.defineProperty(exports, "PerformanceSubTab", { enumerable: true, get: function () { return types_1.PerformanceSubTab; } });
|
|
1620
|
+
Object.defineProperty(exports, "CrashType", { enumerable: true, get: function () { return types_1.CrashType; } });
|
|
1621
|
+
Object.defineProperty(exports, "CrashExportFormat", { enumerable: true, get: function () { return types_1.CrashExportFormat; } });
|
|
1622
|
+
Object.defineProperty(exports, "CrashDetailSubTab", { enumerable: true, get: function () { return types_1.CrashDetailSubTab; } });
|
|
1623
|
+
Object.defineProperty(exports, "CrashFilterType", { enumerable: true, get: function () { return types_1.CrashFilterType; } });
|
|
1624
|
+
Object.defineProperty(exports, "BreadcrumbType", { enumerable: true, get: function () { return types_1.BreadcrumbType; } });
|
|
@@ -5,6 +5,7 @@ export declare const ActiveTab: {
|
|
|
5
5
|
readonly Redux: "redux";
|
|
6
6
|
readonly Bundle: "bundle";
|
|
7
7
|
readonly Performance: "performance";
|
|
8
|
+
readonly Crash: "crash";
|
|
8
9
|
};
|
|
9
10
|
export type ActiveTab = (typeof ActiveTab)[keyof typeof ActiveTab];
|
|
10
11
|
export declare const Method: {
|
|
@@ -50,6 +51,7 @@ export declare const SettingsPage: {
|
|
|
50
51
|
readonly Redux: "redux";
|
|
51
52
|
readonly Bundle: "bundle";
|
|
52
53
|
readonly Performance: "performance";
|
|
54
|
+
readonly Crash: "crash";
|
|
53
55
|
};
|
|
54
56
|
export type SettingsPage = (typeof SettingsPage)[keyof typeof SettingsPage] | null;
|
|
55
57
|
export declare const SettingsSubTab: {
|
|
@@ -113,3 +115,42 @@ export declare const PerformanceSubTab: {
|
|
|
113
115
|
readonly Memory: "memory";
|
|
114
116
|
};
|
|
115
117
|
export type PerformanceSubTab = (typeof PerformanceSubTab)[keyof typeof PerformanceSubTab];
|
|
118
|
+
export declare const CrashType: {
|
|
119
|
+
readonly Native: "native";
|
|
120
|
+
readonly Js: "js";
|
|
121
|
+
readonly Promise: "promise";
|
|
122
|
+
readonly Render: "render";
|
|
123
|
+
readonly Custom: "custom";
|
|
124
|
+
};
|
|
125
|
+
export type CrashType = (typeof CrashType)[keyof typeof CrashType];
|
|
126
|
+
export declare const CrashExportFormat: {
|
|
127
|
+
readonly Text: "text";
|
|
128
|
+
readonly Markdown: "markdown";
|
|
129
|
+
readonly Json: "json";
|
|
130
|
+
};
|
|
131
|
+
export type CrashExportFormat = (typeof CrashExportFormat)[keyof typeof CrashExportFormat];
|
|
132
|
+
export declare const CrashDetailSubTab: {
|
|
133
|
+
readonly Stack: "stack";
|
|
134
|
+
readonly Diagnostics: "diagnostics";
|
|
135
|
+
readonly Breadcrumbs: "breadcrumbs";
|
|
136
|
+
readonly Raw: "raw";
|
|
137
|
+
};
|
|
138
|
+
export type CrashDetailSubTab = (typeof CrashDetailSubTab)[keyof typeof CrashDetailSubTab];
|
|
139
|
+
export declare const CrashFilterType: {
|
|
140
|
+
readonly All: "all";
|
|
141
|
+
readonly Fatal: "fatal";
|
|
142
|
+
readonly Js: "js";
|
|
143
|
+
readonly Promise: "promise";
|
|
144
|
+
readonly Render: "render";
|
|
145
|
+
readonly Native: "native";
|
|
146
|
+
};
|
|
147
|
+
export type CrashFilterType = (typeof CrashFilterType)[keyof typeof CrashFilterType];
|
|
148
|
+
export declare const BreadcrumbType: {
|
|
149
|
+
readonly Navigation: "navigation";
|
|
150
|
+
readonly Network: "network";
|
|
151
|
+
readonly Redux: "redux";
|
|
152
|
+
readonly Console: "console";
|
|
153
|
+
readonly User: "user";
|
|
154
|
+
readonly System: "system";
|
|
155
|
+
};
|
|
156
|
+
export type BreadcrumbType = (typeof BreadcrumbType)[keyof typeof BreadcrumbType];
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Universal TypeScript Enum Objects and Type Aliases.
|
|
4
4
|
// Allows both enum-style access (e.g. ActiveTab.Apis) and string literals ('apis').
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
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 = void 0;
|
|
6
|
+
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 = void 0;
|
|
7
7
|
exports.ActiveTab = {
|
|
8
8
|
Apis: 'apis',
|
|
9
9
|
Analytics: 'analytics',
|
|
@@ -11,6 +11,7 @@ exports.ActiveTab = {
|
|
|
11
11
|
Redux: 'redux',
|
|
12
12
|
Bundle: 'bundle',
|
|
13
13
|
Performance: 'performance',
|
|
14
|
+
Crash: 'crash',
|
|
14
15
|
};
|
|
15
16
|
exports.Method = {
|
|
16
17
|
All: 'ALL',
|
|
@@ -50,6 +51,7 @@ exports.SettingsPage = {
|
|
|
50
51
|
Redux: 'redux',
|
|
51
52
|
Bundle: 'bundle',
|
|
52
53
|
Performance: 'performance',
|
|
54
|
+
Crash: 'crash',
|
|
53
55
|
};
|
|
54
56
|
exports.SettingsSubTab = {
|
|
55
57
|
Module: 'module',
|
|
@@ -103,3 +105,37 @@ exports.PerformanceSubTab = {
|
|
|
103
105
|
Interactions: 'interactions',
|
|
104
106
|
Memory: 'memory',
|
|
105
107
|
};
|
|
108
|
+
exports.CrashType = {
|
|
109
|
+
Native: 'native',
|
|
110
|
+
Js: 'js',
|
|
111
|
+
Promise: 'promise',
|
|
112
|
+
Render: 'render',
|
|
113
|
+
Custom: 'custom',
|
|
114
|
+
};
|
|
115
|
+
exports.CrashExportFormat = {
|
|
116
|
+
Text: 'text',
|
|
117
|
+
Markdown: 'markdown',
|
|
118
|
+
Json: 'json',
|
|
119
|
+
};
|
|
120
|
+
exports.CrashDetailSubTab = {
|
|
121
|
+
Stack: 'stack',
|
|
122
|
+
Diagnostics: 'diagnostics',
|
|
123
|
+
Breadcrumbs: 'breadcrumbs',
|
|
124
|
+
Raw: 'raw',
|
|
125
|
+
};
|
|
126
|
+
exports.CrashFilterType = {
|
|
127
|
+
All: 'all',
|
|
128
|
+
Fatal: 'fatal',
|
|
129
|
+
Js: 'js',
|
|
130
|
+
Promise: 'promise',
|
|
131
|
+
Render: 'render',
|
|
132
|
+
Native: 'native',
|
|
133
|
+
};
|
|
134
|
+
exports.BreadcrumbType = {
|
|
135
|
+
Navigation: 'navigation',
|
|
136
|
+
Network: 'network',
|
|
137
|
+
Redux: 'redux',
|
|
138
|
+
Console: 'console',
|
|
139
|
+
User: 'user',
|
|
140
|
+
System: 'system',
|
|
141
|
+
};
|