UNPKG

nx

Version:

The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.

46 lines (45 loc) 1.74 kB
"use strict"; 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'] }); }