@mui/x-telemetry
Version:
MUI X Telemetry.
70 lines (65 loc) • 2.48 kB
JavaScript
;
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;