UNPKG

@mui/x-telemetry

Version:
62 lines (58 loc) 2.02 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { getTelemetryEnvConfigValue } from "./config.js"; import { fetchWithRetry } from "./fetcher.js"; const sendMuiXTelemetryRetries = 3; function shouldSendTelemetry(telemetryContext) { // Disable reporting in SSR / Node.js if (typeof window === 'undefined') { return false; } // Priority to the config (e.g. in code, env) const envIsCollecting = getTelemetryEnvConfigValue('IS_COLLECTING'); if (typeof envIsCollecting === 'boolean') { return envIsCollecting; } // Disable collection of the telemetry in CI builds, // as it not related to development process if (telemetryContext.traits.isCI) { return false; } // Disabled by default return false; } async function sendMuiXTelemetryEvent(event) { try { // Disable collection of the telemetry // in production environment if (process.env.NODE_ENV === 'production') { return; } const { default: getTelemetryContext } = await import("./get-context.js"); const telemetryContext = await getTelemetryContext(); if (!event || !shouldSendTelemetry(telemetryContext)) { return; } const eventPayload = _extends({}, event, { context: _extends({}, telemetryContext.traits, event.context) }); if (getTelemetryEnvConfigValue('DEBUG')) { console.log('[mui-x-telemetry] event', JSON.stringify(eventPayload, null, 2)); return; } // TODO: batch events and send them in a single request when there will be more await fetchWithRetry('https://x-telemetry.mui.com/v2/telemetry/record', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Telemetry-Client-Version': "8.5.3" ?? '<dev>', 'X-Telemetry-Node-Env': process.env.NODE_ENV ?? '<unknown>' }, body: JSON.stringify([eventPayload]) }, sendMuiXTelemetryRetries); } catch (_) { console.log('[mui-x-telemetry] error', _); } } export default sendMuiXTelemetryEvent;