UNPKG

@mui/x-telemetry

Version:
70 lines (65 loc) 2.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard")); var _config = require("./config"); var _fetcher = require("./fetcher"); 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 = (0, _config.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 Promise.resolve().then(() => (0, _interopRequireWildcard2.default)(require('./get-context'))); const telemetryContext = await getTelemetryContext(); if (!event || !shouldSendTelemetry(telemetryContext)) { return; } const eventPayload = (0, _extends2.default)({}, event, { context: (0, _extends2.default)({}, telemetryContext.traits, event.context) }); if ((0, _config.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 (0, _fetcher.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', _); } } var _default = exports.default = sendMuiXTelemetryEvent;