react-native-inapp-inspector 2.3.14 → 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/AnimatedEntrance.js +3 -3
- package/dist/commonjs/components/ConsoleLogCard.js +174 -100
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
- package/dist/commonjs/components/Inspector/ConsoleTab.js +25 -38
- package/dist/commonjs/components/Inspector/CrashTab.js +19 -28
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +198 -98
- 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 +58 -6
- package/dist/commonjs/components/Inspector/MainScreen.js +100 -58
- package/dist/commonjs/components/Inspector/NetworkTab.js +26 -371
- 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 +40 -7
- package/dist/commonjs/components/Inspector/ReduxTab.js +3 -23
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
- package/dist/commonjs/components/Inspector/StorageTab.js +23 -28
- package/dist/commonjs/components/Inspector/TabBar.js +50 -15
- package/dist/commonjs/components/JsonViewer.js +14 -2
- package/dist/commonjs/components/LogCard.js +428 -227
- 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/customHooks/analyticsLogger.js +1 -1
- package/dist/commonjs/customHooks/consoleLogger.js +34 -2
- package/dist/commonjs/customHooks/crashHandler.js +1 -1
- package/dist/commonjs/customHooks/networkLogger.js +184 -26
- 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.d.ts +1 -1
- package/dist/commonjs/helpers/searchQueryParser.js +39 -291
- 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 +173 -29
- 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/AnimatedEntrance.js +3 -3
- package/dist/esm/components/ConsoleLogCard.js +141 -100
- package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
- package/dist/esm/components/Inspector/ConsoleTab.js +26 -39
- package/dist/esm/components/Inspector/CrashTab.js +20 -29
- package/dist/esm/components/Inspector/DeviceInfoTab.js +198 -98
- 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 +60 -8
- package/dist/esm/components/Inspector/MainScreen.js +101 -59
- package/dist/esm/components/Inspector/NetworkTab.js +27 -372
- 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 +40 -7
- package/dist/esm/components/Inspector/ReduxTab.js +4 -24
- package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
- package/dist/esm/components/Inspector/StorageTab.js +23 -28
- package/dist/esm/components/Inspector/TabBar.js +50 -15
- package/dist/esm/components/JsonViewer.js +14 -2
- package/dist/esm/components/LogCard.js +422 -221
- 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/customHooks/analyticsLogger.js +1 -1
- package/dist/esm/customHooks/consoleLogger.js +34 -2
- package/dist/esm/customHooks/crashHandler.js +1 -1
- package/dist/esm/customHooks/networkLogger.js +184 -26
- 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.d.ts +1 -1
- package/dist/esm/helpers/searchQueryParser.js +39 -291
- 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 +171 -29
- 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/AnimatedEntrance.tsx +3 -3
- package/src/components/ConsoleLogCard.tsx +154 -103
- package/src/components/Inspector/AnalyticsTab.tsx +0 -23
- package/src/components/Inspector/ConsoleTab.tsx +27 -41
- package/src/components/Inspector/CrashTab.tsx +19 -28
- package/src/components/Inspector/DeviceInfoTab.tsx +224 -102
- package/src/components/Inspector/FeedbackModal.tsx +626 -0
- package/src/components/Inspector/InspectorHeader.tsx +83 -5
- package/src/components/Inspector/MainScreen.tsx +61 -6
- package/src/components/Inspector/NetworkTab.tsx +70 -480
- package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
- package/src/components/Inspector/PerformanceTab.tsx +44 -8
- package/src/components/Inspector/ReduxTab.tsx +9 -24
- package/src/components/Inspector/SettingsPanel.tsx +1162 -197
- package/src/components/Inspector/StorageTab.tsx +27 -30
- package/src/components/Inspector/TabBar.tsx +57 -20
- package/src/components/JsonViewer.tsx +15 -2
- package/src/components/LogCard.tsx +528 -339
- package/src/components/NetworkIcons.tsx +92 -0
- package/src/constants/version.ts +1 -1
- package/src/customHooks/analyticsLogger.ts +1 -1
- package/src/customHooks/consoleLogger.ts +36 -3
- package/src/customHooks/crashHandler.ts +1 -1
- package/src/customHooks/networkLogger.ts +214 -26
- package/src/helpers/index.ts +1 -0
- package/src/helpers/remoteConfig.ts +212 -0
- package/src/helpers/searchQueryParser.ts +42 -284
- package/src/helpers/telemetry.ts +381 -10
- package/src/index.tsx +374 -211
- 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';
|