nx
Version:
46 lines (45 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const perf_hooks_1 = require("perf_hooks");
const analytics_1 = require("../analytics");
const is_on_daemon_1 = require("../daemon/is-on-daemon");
const logger_1 = require("../daemon/logger");
function isTrackedDetail(detail) {
return (typeof detail === 'object' &&
detail !== null &&
detail.track === true);
}
const dimensionValues = analytics_1.customDimensions
? new Set(Object.values(analytics_1.customDimensions))
: null;
let initialized = false;
if (!initialized) {
initialized = true;
const obs = new perf_hooks_1.PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
const { detail } = entry;
if (process.env.NX_PERF_LOGGING === 'true') {
const message = `Time taken for '${entry.name}' ${entry.duration}ms`;
if ((0, is_on_daemon_1.isOnDaemon)()) {
logger_1.serverLogger.log(message);
}
else {
console.log(message);
}
}
if (isTrackedDetail(detail) && dimensionValues) {
const { track, ...rest } = detail;
const eventParameters = {
[analytics_1.customDimensions.duration]: entry.duration,
};
for (const [key, value] of Object.entries(rest)) {
if (dimensionValues.has(key)) {
eventParameters[key] = value;
}
}
(0, analytics_1.reportEvent)(entry.name, eventParameters);
}
}
});
obs.observe({ entryTypes: ['measure'] });
}