react-native-inapp-inspector 2.3.15 → 2.3.16
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 +1 -0
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
- package/dist/commonjs/components/Inspector/ConsoleTab.js +0 -22
- package/dist/commonjs/components/Inspector/CrashTab.js +0 -23
- package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +7 -0
- package/dist/commonjs/components/Inspector/FeedbackModal.js +552 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +56 -4
- package/dist/commonjs/components/Inspector/MainScreen.js +45 -3
- package/dist/commonjs/components/Inspector/NetworkTab.js +27 -38
- package/dist/commonjs/components/Inspector/NpmStarPrompt.d.ts +3 -0
- package/dist/commonjs/components/Inspector/NpmStarPrompt.js +494 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.js +8 -1
- package/dist/commonjs/components/Inspector/ReduxTab.js +0 -22
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
- package/dist/commonjs/components/Inspector/StorageTab.js +0 -23
- package/dist/commonjs/components/Inspector/TabBar.js +50 -15
- package/dist/commonjs/components/NetworkIcons.d.ts +5 -0
- package/dist/commonjs/components/NetworkIcons.js +33 -2
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/index.d.ts +1 -0
- package/dist/commonjs/helpers/index.js +1 -0
- package/dist/commonjs/helpers/remoteConfig.d.ts +4 -0
- package/dist/commonjs/helpers/remoteConfig.js +165 -0
- package/dist/commonjs/helpers/searchQueryParser.js +2 -0
- package/dist/commonjs/helpers/telemetry.d.ts +5 -0
- package/dist/commonjs/helpers/telemetry.js +339 -8
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +32 -2
- package/dist/commonjs/styles/AppFonts.d.ts +2 -0
- package/dist/commonjs/styles/AppFonts.js +1 -0
- package/dist/commonjs/styles/index.d.ts +22 -0
- package/dist/commonjs/styles/index.js +19 -0
- package/dist/commonjs/types/enums.d.ts +1 -0
- package/dist/commonjs/types/enums.js +1 -0
- package/dist/commonjs/types/interfaces.d.ts +12 -0
- package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
- package/dist/esm/components/Inspector/ConsoleTab.js +1 -23
- package/dist/esm/components/Inspector/CrashTab.js +1 -24
- package/dist/esm/components/Inspector/FeedbackModal.d.ts +7 -0
- package/dist/esm/components/Inspector/FeedbackModal.js +515 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +57 -5
- package/dist/esm/components/Inspector/MainScreen.js +46 -4
- package/dist/esm/components/Inspector/NetworkTab.js +28 -39
- package/dist/esm/components/Inspector/NpmStarPrompt.d.ts +3 -0
- package/dist/esm/components/Inspector/NpmStarPrompt.js +454 -0
- package/dist/esm/components/Inspector/PerformanceTab.js +8 -1
- package/dist/esm/components/Inspector/ReduxTab.js +1 -23
- package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
- package/dist/esm/components/Inspector/StorageTab.js +0 -23
- package/dist/esm/components/Inspector/TabBar.js +50 -15
- package/dist/esm/components/NetworkIcons.d.ts +5 -0
- package/dist/esm/components/NetworkIcons.js +26 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +1 -0
- package/dist/esm/helpers/remoteConfig.d.ts +4 -0
- package/dist/esm/helpers/remoteConfig.js +160 -0
- package/dist/esm/helpers/searchQueryParser.js +2 -0
- package/dist/esm/helpers/telemetry.d.ts +5 -0
- package/dist/esm/helpers/telemetry.js +332 -9
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +30 -2
- package/dist/esm/styles/AppFonts.d.ts +2 -0
- package/dist/esm/styles/AppFonts.js +1 -0
- package/dist/esm/styles/index.d.ts +22 -0
- package/dist/esm/styles/index.js +19 -0
- package/dist/esm/types/enums.d.ts +1 -0
- package/dist/esm/types/enums.js +1 -0
- package/dist/esm/types/interfaces.d.ts +12 -0
- package/package.json +1 -1
- package/src/components/Inspector/AnalyticsTab.tsx +0 -23
- package/src/components/Inspector/ConsoleTab.tsx +0 -23
- package/src/components/Inspector/CrashTab.tsx +0 -23
- package/src/components/Inspector/FeedbackModal.tsx +626 -0
- package/src/components/Inspector/InspectorHeader.tsx +78 -2
- package/src/components/Inspector/MainScreen.tsx +59 -3
- package/src/components/Inspector/NetworkTab.tsx +69 -78
- package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
- package/src/components/Inspector/PerformanceTab.tsx +8 -1
- package/src/components/Inspector/ReduxTab.tsx +0 -23
- package/src/components/Inspector/SettingsPanel.tsx +1162 -197
- package/src/components/Inspector/StorageTab.tsx +0 -23
- package/src/components/Inspector/TabBar.tsx +57 -20
- package/src/components/NetworkIcons.tsx +92 -0
- package/src/constants/version.ts +1 -1
- package/src/helpers/index.ts +1 -0
- package/src/helpers/remoteConfig.ts +212 -0
- package/src/helpers/searchQueryParser.ts +3 -0
- package/src/helpers/telemetry.ts +381 -10
- package/src/index.tsx +42 -0
- package/src/styles/AppFonts.ts +2 -0
- package/src/styles/index.ts +20 -1
- package/src/types/enums.ts +1 -0
- package/src/types/interfaces.ts +12 -0
|
@@ -1,10 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.setTelemetryEnabled = setTelemetryEnabled;
|
|
7
|
+
exports.markSearchFilterUsed = markSearchFilterUsed;
|
|
4
8
|
exports.trackActiveTelemetryHeartbeat = trackActiveTelemetryHeartbeat;
|
|
9
|
+
exports.trackTelemetryEvent = trackTelemetryEvent;
|
|
10
|
+
exports.trackInspectorTabView = trackInspectorTabView;
|
|
11
|
+
exports.trackInspectorScreenView = trackInspectorScreenView;
|
|
12
|
+
exports.trackInspectorScreenRecord = trackInspectorScreenRecord;
|
|
13
|
+
const react_1 = __importDefault(require("react"));
|
|
5
14
|
const react_native_1 = require("react-native");
|
|
6
15
|
const version_1 = require("../constants/version");
|
|
7
16
|
const settingsStore_1 = require("./settingsStore");
|
|
17
|
+
const reduxLogger_1 = require("../customHooks/reduxLogger");
|
|
18
|
+
const analyticsLogger_1 = require("../customHooks/analyticsLogger");
|
|
19
|
+
const crashHandler_1 = require("../customHooks/crashHandler");
|
|
20
|
+
const networkLogger_1 = require("../customHooks/networkLogger");
|
|
21
|
+
const NativeInspector_1 = require("../native/NativeInspector");
|
|
22
|
+
const index_1 = require("./index");
|
|
8
23
|
const telemetryConfig_1 = require("../constants/telemetryConfig");
|
|
9
24
|
const PKG_NAME = 'react-native-inapp-inspector';
|
|
10
25
|
const KEY_MATERIAL = `${PKG_NAME}::${telemetryConfig_1.TELEMETRY_SALT}`;
|
|
@@ -64,19 +79,33 @@ function getCollectUrl() {
|
|
|
64
79
|
}
|
|
65
80
|
const PING_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
66
81
|
let isTelemetryEnabled = true;
|
|
82
|
+
let _hasSearchFilterBeenUsed = false;
|
|
67
83
|
function setTelemetryEnabled(enabled) {
|
|
68
84
|
isTelemetryEnabled = enabled;
|
|
69
85
|
}
|
|
86
|
+
function markSearchFilterUsed() {
|
|
87
|
+
_hasSearchFilterBeenUsed = true;
|
|
88
|
+
}
|
|
70
89
|
async function getOrCreateClientId() {
|
|
71
90
|
try {
|
|
72
91
|
const settings = await (0, settingsStore_1.loadSettings)();
|
|
73
|
-
if (settings.telemetryClientId) {
|
|
74
|
-
|
|
92
|
+
if (settings.telemetryClientId || settings.telemetryDeviceId) {
|
|
93
|
+
const id = settings.telemetryClientId || settings.telemetryDeviceId || '';
|
|
94
|
+
if (!settings.telemetryDeviceId) {
|
|
95
|
+
await (0, settingsStore_1.saveSettings)({ ...settings, telemetryDeviceId: id });
|
|
96
|
+
}
|
|
97
|
+
return id;
|
|
75
98
|
}
|
|
76
99
|
const part1 = Math.floor(100000000 + Math.random() * 900000000);
|
|
77
100
|
const part2 = Math.floor(1000000000 + Math.random() * 9000000000);
|
|
78
101
|
const newId = `${part1}.${part2}`;
|
|
79
|
-
|
|
102
|
+
const now = Date.now();
|
|
103
|
+
await (0, settingsStore_1.saveSettings)({
|
|
104
|
+
...settings,
|
|
105
|
+
telemetryClientId: newId,
|
|
106
|
+
telemetryDeviceId: newId,
|
|
107
|
+
deviceFirstSeen: settings.deviceFirstSeen || now,
|
|
108
|
+
});
|
|
80
109
|
return newId;
|
|
81
110
|
}
|
|
82
111
|
catch {
|
|
@@ -113,26 +142,181 @@ function isDeviceEmulator() {
|
|
|
113
142
|
}
|
|
114
143
|
return false;
|
|
115
144
|
}
|
|
116
|
-
function
|
|
145
|
+
function getDeviceLocaleInfo() {
|
|
146
|
+
try {
|
|
147
|
+
const opts = typeof Intl !== 'undefined' && Intl.DateTimeFormat ? Intl.DateTimeFormat().resolvedOptions() : {};
|
|
148
|
+
const timeZone = opts.timeZone || 'unknown';
|
|
149
|
+
const locale = opts.locale || 'unknown';
|
|
150
|
+
let countryCode = 'unknown';
|
|
151
|
+
if (locale && locale !== 'unknown') {
|
|
152
|
+
const parts = locale.split(/[-_]/);
|
|
153
|
+
if (parts.length > 1) {
|
|
154
|
+
countryCode = parts[parts.length - 1].toUpperCase();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return { countryCode, locale, timeZone };
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return { countryCode: 'unknown', locale: 'unknown', timeZone: 'unknown' };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function getSystemMetadata(environment, currentSettings) {
|
|
117
164
|
const rnConstants = react_native_1.Platform.constants;
|
|
118
165
|
const rnVersion = rnConstants?.reactNativeVersion
|
|
119
166
|
? `${rnConstants.reactNativeVersion.major}.${rnConstants.reactNativeVersion.minor}.${rnConstants.reactNativeVersion.patch}`
|
|
120
167
|
: 'unknown';
|
|
121
168
|
const isHermes = Boolean(typeof global.HermesInternal === 'object' && global.HermesInternal !== null);
|
|
122
169
|
const isFabric = Boolean(global?.nativeFabricUIManager !== undefined);
|
|
170
|
+
const isBridgeless = Boolean(global?._rn_bridgeless || global?.RN$Bridgeless);
|
|
123
171
|
const isDev = Boolean(typeof __DEV__ !== 'undefined' && __DEV__);
|
|
124
172
|
const isEmulator = isDeviceEmulator();
|
|
173
|
+
const { countryCode, locale, timeZone } = getDeviceLocaleInfo();
|
|
174
|
+
let screenRes = 'unknown';
|
|
175
|
+
let screenDensity = 1;
|
|
176
|
+
let fontScale = 1;
|
|
177
|
+
let deviceFormFactor = 'phone';
|
|
178
|
+
let screenOrientation = 'portrait';
|
|
179
|
+
try {
|
|
180
|
+
const dim = react_native_1.Dimensions.get('window');
|
|
181
|
+
screenRes = `${Math.round(dim.width)}x${Math.round(dim.height)}`;
|
|
182
|
+
screenDensity = react_native_1.PixelRatio.get();
|
|
183
|
+
fontScale = react_native_1.PixelRatio.getFontScale();
|
|
184
|
+
screenOrientation = dim.width > dim.height ? 'landscape' : 'portrait';
|
|
185
|
+
const isTablet = (react_native_1.Platform.OS === 'ios' && Boolean(react_native_1.Platform.isPad)) ||
|
|
186
|
+
(Math.min(dim.width, dim.height) >= 600);
|
|
187
|
+
deviceFormFactor = isTablet ? 'tablet' : 'phone';
|
|
188
|
+
}
|
|
189
|
+
catch { }
|
|
190
|
+
let appearanceMode = 'unknown';
|
|
191
|
+
try {
|
|
192
|
+
appearanceMode = react_native_1.Appearance?.getColorScheme?.() || 'unknown';
|
|
193
|
+
}
|
|
194
|
+
catch { }
|
|
195
|
+
const isExpo = Boolean(globalThis?.expo ||
|
|
196
|
+
globalThis?.__expo ||
|
|
197
|
+
globalThis?.__turboModuleProxy?.name === 'Expo' ||
|
|
198
|
+
react_native_1.Platform.constants?.ExpoVersion);
|
|
199
|
+
let hermesVersion = 'non_hermes';
|
|
200
|
+
let jsEngine = 'jsc';
|
|
201
|
+
if (isHermes) {
|
|
202
|
+
jsEngine = 'hermes';
|
|
203
|
+
try {
|
|
204
|
+
const props = global.HermesInternal?.getRuntimeProperties?.() || {};
|
|
205
|
+
hermesVersion = props['OSS Release Version'] || (props['Bytecode Version'] ? `bc_v${props['Bytecode Version']}` : 'hermes');
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
hermesVersion = 'hermes';
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else if (globalThis?._v8) {
|
|
212
|
+
jsEngine = 'v8';
|
|
213
|
+
}
|
|
214
|
+
let reduxAttached = false;
|
|
215
|
+
try {
|
|
216
|
+
reduxAttached = (0, reduxLogger_1.isReduxConnected)();
|
|
217
|
+
}
|
|
218
|
+
catch { }
|
|
219
|
+
let analyticsAttached = false;
|
|
220
|
+
try {
|
|
221
|
+
analyticsAttached = (0, analyticsLogger_1.isFirebaseAnalyticsPatched)();
|
|
222
|
+
}
|
|
223
|
+
catch { }
|
|
224
|
+
const hasNativeModule = (0, NativeInspector_1.isNativeModuleAvailable)();
|
|
225
|
+
const hasMmkv = Boolean(react_native_1.NativeModules?.RNMMKV || globalThis?.MMKV);
|
|
226
|
+
let capturedCrashesCount = 0;
|
|
227
|
+
try {
|
|
228
|
+
capturedCrashesCount = (0, crashHandler_1.getCrashRecords)().length;
|
|
229
|
+
}
|
|
230
|
+
catch { }
|
|
231
|
+
let capturedApisBracket = '0';
|
|
232
|
+
try {
|
|
233
|
+
const apiCount = (0, networkLogger_1.getNetworkLogs)().length;
|
|
234
|
+
capturedApisBracket =
|
|
235
|
+
apiCount === 0
|
|
236
|
+
? '0'
|
|
237
|
+
: apiCount <= 10
|
|
238
|
+
? '1-10'
|
|
239
|
+
: apiCount <= 50
|
|
240
|
+
? '11-50'
|
|
241
|
+
: apiCount <= 100
|
|
242
|
+
? '51-100'
|
|
243
|
+
: '100+';
|
|
244
|
+
}
|
|
245
|
+
catch { }
|
|
246
|
+
let isMetroConnected = false;
|
|
247
|
+
try {
|
|
248
|
+
isMetroConnected = (0, index_1.isLocalDebugEnvironment)();
|
|
249
|
+
}
|
|
250
|
+
catch { }
|
|
251
|
+
const defaultLandingTab = currentSettings?.defaultTab || 'apis';
|
|
252
|
+
const fabMode = hasNativeModule && currentSettings?.useNativeFab !== false
|
|
253
|
+
? 'native_ui_thread'
|
|
254
|
+
: 'js_floating_button';
|
|
255
|
+
const deviceBrand = String(rnConstants?.Brand ||
|
|
256
|
+
(react_native_1.Platform.OS === 'ios' ? 'Apple' : 'unknown'));
|
|
257
|
+
const deviceModel = String(rnConstants?.Model ||
|
|
258
|
+
rnConstants?.systemName ||
|
|
259
|
+
(react_native_1.Platform.OS === 'ios' ? 'iPhone/iPad' : 'unknown'));
|
|
260
|
+
const deviceManufacturer = String(rnConstants?.Manufacturer ||
|
|
261
|
+
(react_native_1.Platform.OS === 'ios' ? 'Apple' : 'unknown'));
|
|
262
|
+
let appName = 'App';
|
|
263
|
+
let bundleId = 'unknown';
|
|
264
|
+
let appVersion = 'unknown';
|
|
265
|
+
let appBuild = 'unknown';
|
|
266
|
+
try {
|
|
267
|
+
appName = (0, index_1.getAppName)() || 'App';
|
|
268
|
+
bundleId = (0, index_1.getBundleIdentifier)() || 'unknown';
|
|
269
|
+
const verInfo = (0, index_1.getAppVersionAndBuild)();
|
|
270
|
+
appVersion = verInfo.version || 'unknown';
|
|
271
|
+
appBuild = verInfo.build || 'unknown';
|
|
272
|
+
}
|
|
273
|
+
catch { }
|
|
274
|
+
const reactVer = typeof react_1.default !== 'undefined' && react_1.default.version ? react_1.default.version : 'unknown';
|
|
125
275
|
return {
|
|
276
|
+
pkg_name: PKG_NAME,
|
|
277
|
+
pkg_version: version_1.LIB_VERSION,
|
|
126
278
|
lib_version: version_1.LIB_VERSION,
|
|
279
|
+
install_type: isDev ? 'local_dev' : 'bundled_production',
|
|
280
|
+
app_name: appName,
|
|
281
|
+
bundle_id: bundleId,
|
|
282
|
+
app_version: appVersion,
|
|
283
|
+
app_build: appBuild,
|
|
284
|
+
react_version: reactVer,
|
|
127
285
|
platform: react_native_1.Platform.OS,
|
|
128
286
|
os_version: String(react_native_1.Platform.Version || 'unknown'),
|
|
129
287
|
rn_version: rnVersion,
|
|
288
|
+
country_code: countryCode,
|
|
289
|
+
device_locale: locale,
|
|
290
|
+
time_zone: timeZone,
|
|
291
|
+
device_brand: deviceBrand,
|
|
292
|
+
device_model: deviceModel,
|
|
293
|
+
device_manufacturer: deviceManufacturer,
|
|
294
|
+
device_form_factor: deviceFormFactor,
|
|
295
|
+
screen_resolution: screenRes,
|
|
296
|
+
screen_density: screenDensity,
|
|
297
|
+
screen_orientation: screenOrientation,
|
|
298
|
+
font_scale: fontScale,
|
|
299
|
+
appearance_mode: appearanceMode,
|
|
300
|
+
is_expo: isExpo,
|
|
301
|
+
js_engine: jsEngine,
|
|
302
|
+
hermes_version: hermesVersion,
|
|
130
303
|
is_hermes: isHermes,
|
|
131
304
|
is_fabric: isFabric,
|
|
305
|
+
is_bridgeless: isBridgeless,
|
|
306
|
+
has_native_module: hasNativeModule,
|
|
307
|
+
has_mmkv: hasMmkv,
|
|
308
|
+
fab_mode: fabMode,
|
|
309
|
+
default_landing_tab: defaultLandingTab,
|
|
310
|
+
captured_crashes_count: capturedCrashesCount,
|
|
311
|
+
captured_apis_bracket: capturedApisBracket,
|
|
312
|
+
search_filter_used: _hasSearchFilterBeenUsed,
|
|
313
|
+
is_metro_connected: isMetroConnected,
|
|
132
314
|
is_dev: isDev,
|
|
133
315
|
is_emulator: isEmulator,
|
|
134
316
|
device_type: isEmulator ? 'emulator' : 'real_device',
|
|
135
317
|
app_mode: isDev ? 'local_mode' : 'bundled_application',
|
|
318
|
+
redux_attached: reduxAttached,
|
|
319
|
+
analytics_attached: analyticsAttached,
|
|
136
320
|
environment: environment || (isDev ? 'DEV' : 'PROD'),
|
|
137
321
|
engagement_time_msec: 1000,
|
|
138
322
|
};
|
|
@@ -150,21 +334,168 @@ async function trackActiveTelemetryHeartbeat(telemetryEnabled = true, environmen
|
|
|
150
334
|
const settings = await (0, settingsStore_1.loadSettings)();
|
|
151
335
|
const lastPing = settings.telemetryLastPing || 0;
|
|
152
336
|
const now = Date.now();
|
|
153
|
-
|
|
337
|
+
const isNewDevice = !settings.deviceRegistered;
|
|
338
|
+
if (!isNewDevice && now - lastPing < PING_INTERVAL_MS)
|
|
154
339
|
return;
|
|
155
340
|
const clientId = await getOrCreateClientId();
|
|
156
|
-
const params = getSystemMetadata(environment);
|
|
341
|
+
const params = getSystemMetadata(environment, settings);
|
|
342
|
+
const deviceParams = {
|
|
343
|
+
...params,
|
|
344
|
+
device_id: clientId,
|
|
345
|
+
is_new_device: isNewDevice,
|
|
346
|
+
device_first_seen: settings.deviceFirstSeen || now,
|
|
347
|
+
};
|
|
348
|
+
const eventsToDispatch = isNewDevice
|
|
349
|
+
? [
|
|
350
|
+
{ name: 'active_device', params: deviceParams },
|
|
351
|
+
{ name: 'first_device_install', params: deviceParams },
|
|
352
|
+
{ name: 'inspector_active_heartbeat', params: deviceParams },
|
|
353
|
+
]
|
|
354
|
+
: [
|
|
355
|
+
{ name: 'active_device', params: deviceParams },
|
|
356
|
+
{ name: 'inspector_active_heartbeat', params: deviceParams },
|
|
357
|
+
];
|
|
157
358
|
await fetch(url, {
|
|
158
359
|
method: 'POST',
|
|
159
360
|
headers: { 'Content-Type': 'application/json' },
|
|
160
361
|
body: JSON.stringify({
|
|
161
362
|
client_id: clientId,
|
|
363
|
+
user_id: clientId,
|
|
162
364
|
non_personalized_ads: true,
|
|
163
|
-
|
|
365
|
+
user_properties: {
|
|
366
|
+
device_id: { value: clientId },
|
|
367
|
+
pkg_name: { value: params.pkg_name },
|
|
368
|
+
pkg_version: { value: params.pkg_version },
|
|
369
|
+
install_type: { value: params.install_type },
|
|
370
|
+
app_name: { value: params.app_name },
|
|
371
|
+
bundle_id: { value: params.bundle_id },
|
|
372
|
+
app_version: { value: params.app_version },
|
|
373
|
+
react_version: { value: params.react_version },
|
|
374
|
+
country: { value: params.country_code },
|
|
375
|
+
country_code: { value: params.country_code },
|
|
376
|
+
locale: { value: params.device_locale },
|
|
377
|
+
time_zone: { value: params.time_zone },
|
|
378
|
+
device_brand: { value: params.device_brand },
|
|
379
|
+
device_model: { value: params.device_model },
|
|
380
|
+
device_form_factor: { value: params.device_form_factor },
|
|
381
|
+
screen_resolution: { value: params.screen_resolution },
|
|
382
|
+
appearance_mode: { value: params.appearance_mode },
|
|
383
|
+
is_expo: { value: String(params.is_expo) },
|
|
384
|
+
js_engine: { value: params.js_engine },
|
|
385
|
+
is_fabric: { value: String(params.is_fabric) },
|
|
386
|
+
is_bridgeless: { value: String(params.is_bridgeless) },
|
|
387
|
+
has_native_module: { value: String(params.has_native_module) },
|
|
388
|
+
has_mmkv: { value: String(params.has_mmkv) },
|
|
389
|
+
fab_mode: { value: params.fab_mode },
|
|
390
|
+
default_landing_tab: { value: params.default_landing_tab },
|
|
391
|
+
captured_crashes_count: { value: String(params.captured_crashes_count) },
|
|
392
|
+
captured_apis_bracket: { value: params.captured_apis_bracket },
|
|
393
|
+
search_filter_used: { value: String(params.search_filter_used) },
|
|
394
|
+
is_metro_connected: { value: String(params.is_metro_connected) },
|
|
395
|
+
redux_attached: { value: String(params.redux_attached) },
|
|
396
|
+
analytics_attached: { value: String(params.analytics_attached) },
|
|
397
|
+
platform: { value: params.platform },
|
|
398
|
+
rn_version: { value: params.rn_version },
|
|
399
|
+
lib_version: { value: params.lib_version },
|
|
400
|
+
},
|
|
401
|
+
events: eventsToDispatch,
|
|
164
402
|
}),
|
|
165
403
|
});
|
|
166
|
-
(0, settingsStore_1.saveSettings)({
|
|
404
|
+
await (0, settingsStore_1.saveSettings)({
|
|
405
|
+
...settings,
|
|
406
|
+
telemetryClientId: clientId,
|
|
407
|
+
telemetryDeviceId: clientId,
|
|
408
|
+
deviceRegistered: true,
|
|
409
|
+
deviceFirstSeen: settings.deviceFirstSeen || now,
|
|
410
|
+
telemetryLastPing: now,
|
|
411
|
+
telemetryLastActive: now,
|
|
412
|
+
});
|
|
167
413
|
}
|
|
168
414
|
catch {
|
|
169
415
|
}
|
|
170
416
|
}
|
|
417
|
+
async function trackTelemetryEvent(eventName, eventParams) {
|
|
418
|
+
if (!isTelemetryEnabled)
|
|
419
|
+
return;
|
|
420
|
+
const url = getCollectUrl();
|
|
421
|
+
if (!url)
|
|
422
|
+
return;
|
|
423
|
+
try {
|
|
424
|
+
const clientId = await getOrCreateClientId();
|
|
425
|
+
const settings = await (0, settingsStore_1.loadSettings)().catch(() => ({}));
|
|
426
|
+
const metadata = getSystemMetadata(undefined, settings);
|
|
427
|
+
const params = {
|
|
428
|
+
...metadata,
|
|
429
|
+
device_id: clientId,
|
|
430
|
+
...eventParams,
|
|
431
|
+
engagement_time_msec: 100,
|
|
432
|
+
};
|
|
433
|
+
await fetch(url, {
|
|
434
|
+
method: 'POST',
|
|
435
|
+
headers: { 'Content-Type': 'application/json' },
|
|
436
|
+
body: JSON.stringify({
|
|
437
|
+
client_id: clientId,
|
|
438
|
+
user_id: clientId,
|
|
439
|
+
non_personalized_ads: true,
|
|
440
|
+
user_properties: {
|
|
441
|
+
device_id: { value: clientId },
|
|
442
|
+
pkg_name: { value: metadata.pkg_name },
|
|
443
|
+
pkg_version: { value: metadata.pkg_version },
|
|
444
|
+
install_type: { value: metadata.install_type },
|
|
445
|
+
app_name: { value: metadata.app_name },
|
|
446
|
+
bundle_id: { value: metadata.bundle_id },
|
|
447
|
+
app_version: { value: metadata.app_version },
|
|
448
|
+
react_version: { value: metadata.react_version },
|
|
449
|
+
country: { value: metadata.country_code },
|
|
450
|
+
country_code: { value: metadata.country_code },
|
|
451
|
+
locale: { value: metadata.device_locale },
|
|
452
|
+
time_zone: { value: metadata.time_zone },
|
|
453
|
+
device_brand: { value: metadata.device_brand },
|
|
454
|
+
device_model: { value: metadata.device_model },
|
|
455
|
+
device_form_factor: { value: metadata.device_form_factor },
|
|
456
|
+
screen_resolution: { value: metadata.screen_resolution },
|
|
457
|
+
appearance_mode: { value: metadata.appearance_mode },
|
|
458
|
+
is_expo: { value: String(metadata.is_expo) },
|
|
459
|
+
js_engine: { value: metadata.js_engine },
|
|
460
|
+
is_fabric: { value: String(metadata.is_fabric) },
|
|
461
|
+
is_bridgeless: { value: String(metadata.is_bridgeless) },
|
|
462
|
+
has_native_module: { value: String(metadata.has_native_module) },
|
|
463
|
+
has_mmkv: { value: String(metadata.has_mmkv) },
|
|
464
|
+
fab_mode: { value: metadata.fab_mode },
|
|
465
|
+
default_landing_tab: { value: metadata.default_landing_tab },
|
|
466
|
+
captured_crashes_count: { value: String(metadata.captured_crashes_count) },
|
|
467
|
+
captured_apis_bracket: { value: metadata.captured_apis_bracket },
|
|
468
|
+
search_filter_used: { value: String(metadata.search_filter_used) },
|
|
469
|
+
is_metro_connected: { value: String(metadata.is_metro_connected) },
|
|
470
|
+
redux_attached: { value: String(metadata.redux_attached) },
|
|
471
|
+
analytics_attached: { value: String(metadata.analytics_attached) },
|
|
472
|
+
platform: { value: metadata.platform },
|
|
473
|
+
rn_version: { value: metadata.rn_version },
|
|
474
|
+
lib_version: { value: metadata.lib_version },
|
|
475
|
+
},
|
|
476
|
+
events: [{ name: eventName, params }],
|
|
477
|
+
}),
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
function trackInspectorTabView(tabName) {
|
|
484
|
+
trackTelemetryEvent('inspector_tab_view', {
|
|
485
|
+
tab_name: tabName,
|
|
486
|
+
screen_name: `tab_${tabName}`,
|
|
487
|
+
screen_class: 'NetworkInspector',
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
function trackInspectorScreenView(screenName) {
|
|
491
|
+
trackTelemetryEvent('screen_view', {
|
|
492
|
+
screen_name: screenName,
|
|
493
|
+
screen_class: 'NetworkInspector',
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
function trackInspectorScreenRecord(action, recordingType = 'screen') {
|
|
497
|
+
trackTelemetryEvent('inspector_screen_record', {
|
|
498
|
+
action,
|
|
499
|
+
recording_type: recordingType,
|
|
500
|
+
});
|
|
501
|
+
}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -26,4 +26,5 @@ export { ActiveTab, Method, StatusFilter, SortOrder, LocalFilter, ModalAnimation
|
|
|
26
26
|
export { AppFonts, setAppFonts, type AppFontConfig, } from './styles/AppFonts';
|
|
27
27
|
export { AppColors, setAppColors, getThemeColors, updateAppColorsTheme, } from './styles/AppColors';
|
|
28
28
|
export { t, i18n, useTranslation, setLanguage, addTranslations, setTranslations, I18nextProvider, } from './i18n';
|
|
29
|
+
export { fetchRemoteConfigModuleStatus, isFirebaseRemoteConfigAvailable, } from './helpers/remoteConfig';
|
|
29
30
|
export { LIB_VERSION } from './constants/version';
|
package/dist/commonjs/index.js
CHANGED
|
@@ -38,7 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
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
40
|
exports.connectMMKV = exports.connectAsyncStorage = exports.BrandCircleIcon = exports.BrandSquareIcon = exports.prunePerformanceEvents = exports.getMaxPerformanceEventsLimit = exports.setMaxPerformanceEventsLimit = exports.pruneCrashRecords = exports.getMaxCrashLogsLimit = exports.pruneAnalyticsLogs = exports.getMaxAnalyticsLogsLimit = exports.setMaxAnalyticsLogsLimit = exports.pruneReduxHistory = exports.getMaxReduxHistoryLimit = exports.setMaxReduxHistoryLimit = exports.pruneConsoleLogs = exports.getMaxConsoleLogsLimit = exports.setMaxConsoleLogsLimit = exports.pruneNetworkLogs = exports.getMaxNetworkLogsLimit = exports.setMaxNetworkLogsLimit = exports.subscribeMemoryWarning = exports.pruneAllLogs = exports.setupMemoryWarningHandler = exports.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.LIB_VERSION = exports.I18nextProvider = exports.setTranslations = exports.addTranslations = exports.setLanguage = exports.useTranslation = exports.i18n = exports.t = exports.updateAppColorsTheme = exports.getThemeColors = exports.setAppColors = exports.AppColors = exports.setAppFonts = exports.AppFonts = exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.subscribeToStorageChanges = exports.clearStorageDriver = exports.removeStorageEntry = exports.setStorageEntry = exports.fetchStorageEntries = exports.getRegisteredMMKVInstanceIds = exports.isMMKVConnected = exports.isAsyncStorageConnected = void 0;
|
|
41
|
+
exports.LIB_VERSION = exports.isFirebaseRemoteConfigAvailable = exports.fetchRemoteConfigModuleStatus = exports.I18nextProvider = exports.setTranslations = exports.addTranslations = exports.setLanguage = exports.useTranslation = exports.i18n = exports.t = exports.updateAppColorsTheme = exports.getThemeColors = exports.setAppColors = exports.AppColors = exports.setAppFonts = exports.AppFonts = exports.BreadcrumbType = exports.CrashFilterType = exports.CrashDetailSubTab = exports.CrashExportFormat = exports.CrashType = exports.PerformanceSubTab = exports.BundleSubTab = exports.DiffResultType = exports.StackFrameType = exports.GAEventCategory = exports.AnalyticsEventSource = exports.ConsoleLogType = exports.LogFilter = exports.SettingsSubTab = exports.SettingsPage = exports.ModalAnimationType = exports.LocalFilter = exports.SortOrder = exports.StatusFilter = exports.Method = exports.ActiveTab = exports.subscribeToStorageChanges = exports.clearStorageDriver = exports.removeStorageEntry = exports.setStorageEntry = exports.fetchStorageEntries = exports.getRegisteredMMKVInstanceIds = exports.isMMKVConnected = exports.isAsyncStorageConnected = 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");
|
|
@@ -59,9 +59,10 @@ const reduxLogger_1 = require("./customHooks/reduxLogger");
|
|
|
59
59
|
const performanceTracker_1 = require("./customHooks/performanceTracker");
|
|
60
60
|
const bundleAnalyzer_1 = require("./customHooks/bundleAnalyzer");
|
|
61
61
|
const NativeInspector_2 = require("./native/NativeInspector");
|
|
62
|
+
const remoteConfig_1 = require("./helpers/remoteConfig");
|
|
62
63
|
const constants_1 = require("./constants");
|
|
63
64
|
const styles_1 = require("./styles");
|
|
64
|
-
const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, environment, initialVisible = false, visible: controlledVisible, }) => {
|
|
65
|
+
const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, environment, initialVisible = false, visible: controlledVisible, remoteConfig, }) => {
|
|
65
66
|
(0, settingsStore_1.setCustomStorage)(storage || null);
|
|
66
67
|
const [isDark, setIsDark] = (0, react_1.useState)(false);
|
|
67
68
|
const [reduxState, setReduxState] = (0, react_1.useState)(null);
|
|
@@ -198,6 +199,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
198
199
|
const [logSearch, setLogSearch] = (0, react_1.useState)('');
|
|
199
200
|
const [logFilters, setLogFilters] = (0, react_1.useState)(new Set(['all']));
|
|
200
201
|
const [settingsPage, setSettingsPage] = (0, react_1.useState)(null);
|
|
202
|
+
const [isFeedbackOpen, setIsFeedbackOpen] = (0, react_1.useState)(false);
|
|
201
203
|
const [settingsActiveSubTab, setSettingsActiveSubTab] = (0, react_1.useState)('module');
|
|
202
204
|
const [tabVisibility, setTabVisibility] = (0, react_1.useState)({
|
|
203
205
|
apis: true,
|
|
@@ -350,6 +352,25 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
350
352
|
cancelled = true;
|
|
351
353
|
};
|
|
352
354
|
}, []);
|
|
355
|
+
(0, react_1.useEffect)(() => {
|
|
356
|
+
let isMounted = true;
|
|
357
|
+
if (remoteConfig === false)
|
|
358
|
+
return;
|
|
359
|
+
(0, remoteConfig_1.fetchRemoteConfigModuleStatus)(typeof remoteConfig === 'object' ? remoteConfig : undefined)
|
|
360
|
+
.then(remoteModules => {
|
|
361
|
+
if (isMounted && remoteModules) {
|
|
362
|
+
setTabVisibility(prev => ({
|
|
363
|
+
...prev,
|
|
364
|
+
...remoteModules,
|
|
365
|
+
apis: remoteModules.apis ?? true,
|
|
366
|
+
}));
|
|
367
|
+
}
|
|
368
|
+
})
|
|
369
|
+
.catch(() => { });
|
|
370
|
+
return () => {
|
|
371
|
+
isMounted = false;
|
|
372
|
+
};
|
|
373
|
+
}, [remoteConfig]);
|
|
353
374
|
(0, react_1.useEffect)(() => {
|
|
354
375
|
if (!settingsHydratedRef.current)
|
|
355
376
|
return;
|
|
@@ -489,6 +510,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
489
510
|
setActiveTab(key);
|
|
490
511
|
loadNativePage(key);
|
|
491
512
|
}
|
|
513
|
+
(0, telemetry_1.trackInspectorTabView)(key);
|
|
492
514
|
}, [loadNativePage]);
|
|
493
515
|
const [selectedEvent, setSelectedEvent] = (0, react_1.useState)(null);
|
|
494
516
|
const [analyticsSearch, setAnalyticsSearch] = (0, react_1.useState)('');
|
|
@@ -799,10 +821,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
799
821
|
(0, react_1.useEffect)(() => {
|
|
800
822
|
isVisibleRefObj.current = visible;
|
|
801
823
|
if (visible) {
|
|
824
|
+
(0, telemetry_1.trackInspectorScreenView)('InspectorModal');
|
|
802
825
|
const target = defaultTab === 'apis' || tabVisibility?.[defaultTab]
|
|
803
826
|
? defaultTab
|
|
804
827
|
: 'apis';
|
|
805
828
|
setActiveTab(target);
|
|
829
|
+
(0, telemetry_1.trackInspectorTabView)(target);
|
|
806
830
|
if (latestNetworkLogsRef.current.length > 0) {
|
|
807
831
|
const deduped = (0, helpers_1.deduplicateLogs)(latestNetworkLogsRef.current);
|
|
808
832
|
const incoming = new Set(deduped.map(l => l.id));
|
|
@@ -1663,6 +1687,8 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
1663
1687
|
setShowHeaderInfo,
|
|
1664
1688
|
settingsPage,
|
|
1665
1689
|
setSettingsPage,
|
|
1690
|
+
isFeedbackOpen,
|
|
1691
|
+
setIsFeedbackOpen,
|
|
1666
1692
|
updateAvailable,
|
|
1667
1693
|
latestNpmVersion,
|
|
1668
1694
|
clearAnim,
|
|
@@ -1821,6 +1847,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
|
|
|
1821
1847
|
selectedLog,
|
|
1822
1848
|
showHeaderInfo,
|
|
1823
1849
|
settingsPage,
|
|
1850
|
+
isFeedbackOpen,
|
|
1824
1851
|
updateAvailable,
|
|
1825
1852
|
latestNpmVersion,
|
|
1826
1853
|
clearAnim,
|
|
@@ -2104,5 +2131,8 @@ Object.defineProperty(exports, "setLanguage", { enumerable: true, get: function
|
|
|
2104
2131
|
Object.defineProperty(exports, "addTranslations", { enumerable: true, get: function () { return i18n_2.addTranslations; } });
|
|
2105
2132
|
Object.defineProperty(exports, "setTranslations", { enumerable: true, get: function () { return i18n_2.setTranslations; } });
|
|
2106
2133
|
Object.defineProperty(exports, "I18nextProvider", { enumerable: true, get: function () { return i18n_2.I18nextProvider; } });
|
|
2134
|
+
var remoteConfig_2 = require("./helpers/remoteConfig");
|
|
2135
|
+
Object.defineProperty(exports, "fetchRemoteConfigModuleStatus", { enumerable: true, get: function () { return remoteConfig_2.fetchRemoteConfigModuleStatus; } });
|
|
2136
|
+
Object.defineProperty(exports, "isFirebaseRemoteConfigAvailable", { enumerable: true, get: function () { return remoteConfig_2.isFirebaseRemoteConfigAvailable; } });
|
|
2107
2137
|
var version_1 = require("./constants/version");
|
|
2108
2138
|
Object.defineProperty(exports, "LIB_VERSION", { enumerable: true, get: function () { return version_1.LIB_VERSION; } });
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
export interface AppFontConfig {
|
|
2
2
|
interRegular?: string;
|
|
3
3
|
interMedium?: string;
|
|
4
|
+
interSemiBold?: string;
|
|
4
5
|
interBold?: string;
|
|
5
6
|
Sfprotext?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare const AppFonts: {
|
|
8
9
|
interRegular: string;
|
|
9
10
|
interMedium: string;
|
|
11
|
+
interSemiBold: string;
|
|
10
12
|
interBold: string;
|
|
11
13
|
Sfprotext: string;
|
|
12
14
|
};
|
|
@@ -149,6 +149,28 @@ export declare const getRawStyles: (colors: typeof AppColors) => {
|
|
|
149
149
|
listContent: {
|
|
150
150
|
paddingBottom: number;
|
|
151
151
|
};
|
|
152
|
+
supportFab: {
|
|
153
|
+
position: string;
|
|
154
|
+
bottom: number;
|
|
155
|
+
right: number;
|
|
156
|
+
width: number;
|
|
157
|
+
height: number;
|
|
158
|
+
borderRadius: number;
|
|
159
|
+
backgroundColor: string;
|
|
160
|
+
alignItems: string;
|
|
161
|
+
justifyContent: string;
|
|
162
|
+
shadowColor: string;
|
|
163
|
+
shadowOffset: {
|
|
164
|
+
width: number;
|
|
165
|
+
height: number;
|
|
166
|
+
};
|
|
167
|
+
shadowOpacity: number;
|
|
168
|
+
shadowRadius: number;
|
|
169
|
+
elevation: number;
|
|
170
|
+
zIndex: number;
|
|
171
|
+
borderWidth: number;
|
|
172
|
+
borderColor: string;
|
|
173
|
+
};
|
|
152
174
|
scrollTopBtn: {
|
|
153
175
|
position: string;
|
|
154
176
|
bottom: number;
|
|
@@ -173,6 +173,25 @@ const getRawStyles = (colors) => ({
|
|
|
173
173
|
letterSpacing: 0.2,
|
|
174
174
|
},
|
|
175
175
|
listContent: { paddingBottom: react_native_1.Platform.OS === 'ios' ? 44 : 32 },
|
|
176
|
+
supportFab: {
|
|
177
|
+
position: 'absolute',
|
|
178
|
+
bottom: 22,
|
|
179
|
+
right: 16,
|
|
180
|
+
width: 42,
|
|
181
|
+
height: 42,
|
|
182
|
+
borderRadius: 21,
|
|
183
|
+
backgroundColor: colors.purple,
|
|
184
|
+
alignItems: 'center',
|
|
185
|
+
justifyContent: 'center',
|
|
186
|
+
shadowColor: colors.purple,
|
|
187
|
+
shadowOffset: { width: 0, height: 4 },
|
|
188
|
+
shadowOpacity: 0.45,
|
|
189
|
+
shadowRadius: 8,
|
|
190
|
+
elevation: 14,
|
|
191
|
+
zIndex: 999,
|
|
192
|
+
borderWidth: 1.5,
|
|
193
|
+
borderColor: 'rgba(255, 255, 255, 0.25)',
|
|
194
|
+
},
|
|
176
195
|
scrollTopBtn: {
|
|
177
196
|
position: 'absolute',
|
|
178
197
|
bottom: 22,
|
|
@@ -67,6 +67,7 @@ export declare const SettingsSubTab: {
|
|
|
67
67
|
readonly Module: "module";
|
|
68
68
|
readonly Ui: "ui";
|
|
69
69
|
readonly Limits: "limits";
|
|
70
|
+
readonly About: "about";
|
|
70
71
|
};
|
|
71
72
|
export type SettingsSubTab = (typeof SettingsSubTab)[keyof typeof SettingsSubTab];
|
|
72
73
|
export declare const LogFilter: {
|
|
@@ -151,8 +151,17 @@ export interface PersistedSettings {
|
|
|
151
151
|
reduxExpandDepth?: number;
|
|
152
152
|
showDuplicateLogs?: boolean;
|
|
153
153
|
showUpdateToast?: boolean;
|
|
154
|
+
useNativeFab?: boolean;
|
|
155
|
+
shakeToOpen?: boolean;
|
|
154
156
|
telemetryClientId?: string;
|
|
157
|
+
telemetryDeviceId?: string;
|
|
158
|
+
deviceRegistered?: boolean;
|
|
159
|
+
deviceFirstSeen?: number;
|
|
155
160
|
telemetryLastPing?: number;
|
|
161
|
+
telemetryLastActive?: number;
|
|
162
|
+
starPromptActioned?: boolean;
|
|
163
|
+
starPromptLastShown?: number;
|
|
164
|
+
starPromptFirstSeen?: number;
|
|
156
165
|
}
|
|
157
166
|
export interface NetworkInspectorProps {
|
|
158
167
|
enabled?: boolean;
|
|
@@ -163,6 +172,7 @@ export interface NetworkInspectorProps {
|
|
|
163
172
|
environment?: 'DEV' | 'UAT' | 'PrePROD' | 'PROD' | 'QA' | 'Staging' | string;
|
|
164
173
|
initialVisible?: boolean;
|
|
165
174
|
visible?: boolean;
|
|
175
|
+
remoteConfig?: boolean | any;
|
|
166
176
|
}
|
|
167
177
|
export interface NavigationTrackerProps {
|
|
168
178
|
onStateChange: (state: any) => void;
|
|
@@ -198,6 +208,8 @@ export interface InspectorContextValue {
|
|
|
198
208
|
setShowHeaderInfo: React.Dispatch<React.SetStateAction<boolean>>;
|
|
199
209
|
settingsPage: SettingsPage;
|
|
200
210
|
setSettingsPage: React.Dispatch<React.SetStateAction<SettingsPage>>;
|
|
211
|
+
isFeedbackOpen: boolean;
|
|
212
|
+
setIsFeedbackOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
201
213
|
updateAvailable: boolean;
|
|
202
214
|
latestNpmVersion: string | null;
|
|
203
215
|
clearAnim: Animated.Value;
|