import { AsyncParallelHook } from 'tapable'; /** * @public */ export interface IMetricsData { /** * The command that was executed. */ command: string; /** * Whether or not the command ran into errors */ encounteredError?: boolean; /** * The total execution duration of all user-defined tasks from `heft.json`, in milliseconds. * This metric is for measuring the cumulative time spent on the underlying build steps for a project. * If running in watch mode, this will be the duration of the most recent incremental build. */ taskTotalExecutionMs: number; /** * The total duration before Heft started executing user-defined tasks, in milliseconds. * This metric is for tracking the contribution of Heft itself to total build duration. */ bootDurationMs: number; /** * How long the process has been alive, in milliseconds. * This metric is for watch mode, to analyze how long developers leave individual Heft sessions running. */ totalUptimeMs: number; /** * The name of the operating system provided by NodeJS. */ machineOs: string; /** * The processor's architecture. */ machineArch: string; /** * The number of processor cores. */ machineCores: number; /** * The processor's model name. */ machineProcessor: string; /** * The total amount of memory the machine has, in megabytes. */ machineTotalMemoryMB: number; /** * A map of commandline parameter names to their effective values */ commandParameters: Record; } /** * @public */ export interface IHeftRecordMetricsHookOptions { /** * @public */ metricName: string; /** * @public */ metricData: IMetricsData; } /** * @internal */ export interface IPerformanceData { taskTotalExecutionMs: number; encounteredError?: boolean; } /** * @internal * A simple performance metrics collector. A plugin is required to pipe data anywhere. */ export declare class MetricsCollector { readonly recordMetricsHook: AsyncParallelHook; private _bootDurationMs; private _startTimeMs; /** * Start metrics log timer. */ setStartTime(): void; /** * Record metrics to the installed plugin(s). * * @param command - Describe the user command, e.g. `start` or `build` * @param parameterMap - Optional map of parameters to their values * @param performanceData - Optional performance data */ recordAsync(command: string, performanceData?: Partial, parameters?: Record): Promise; } //# sourceMappingURL=MetricsCollector.d.ts.map