123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- declare module "perf_hooks" {
- import { AsyncResource } from "async_hooks";
-
- interface PerformanceEntry {
- /**
- * The total number of milliseconds elapsed for this entry.
- * This value will not be meaningful for all Performance Entry types.
- */
- readonly duration: number;
-
- /**
- * The name of the performance entry.
- */
- readonly name: string;
-
- /**
- * The high resolution millisecond timestamp marking the starting time of the Performance Entry.
- */
- readonly startTime: number;
-
- /**
- * The type of the performance entry.
- * Currently it may be one of: 'node', 'mark', 'measure', 'gc', or 'function'.
- */
- readonly entryType: string;
-
- /**
- * When performanceEntry.entryType is equal to 'gc', the performance.kind property identifies
- * the type of garbage collection operation that occurred.
- * The value may be one of perf_hooks.constants.
- */
- readonly kind?: number;
- }
-
- interface PerformanceNodeTiming extends PerformanceEntry {
- /**
- * The high resolution millisecond timestamp at which the Node.js process completed bootstrap.
- */
- readonly bootstrapComplete: number;
-
- /**
- * The high resolution millisecond timestamp at which cluster processing ended.
- */
- readonly clusterSetupEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which cluster processing started.
- */
- readonly clusterSetupStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js event loop exited.
- */
- readonly loopExit: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js event loop started.
- */
- readonly loopStart: number;
-
- /**
- * The high resolution millisecond timestamp at which main module load ended.
- */
- readonly moduleLoadEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which main module load started.
- */
- readonly moduleLoadStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the Node.js process was initialized.
- */
- readonly nodeStart: number;
-
- /**
- * The high resolution millisecond timestamp at which preload module load ended.
- */
- readonly preloadModuleLoadEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which preload module load started.
- */
- readonly preloadModuleLoadStart: number;
-
- /**
- * The high resolution millisecond timestamp at which third_party_main processing ended.
- */
- readonly thirdPartyMainEnd: number;
-
- /**
- * The high resolution millisecond timestamp at which third_party_main processing started.
- */
- readonly thirdPartyMainStart: number;
-
- /**
- * The high resolution millisecond timestamp at which the V8 platform was initialized.
- */
- readonly v8Start: number;
- }
-
- interface Performance {
- /**
- * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline.
- * If name is provided, removes entries with name.
- * @param name
- */
- clearFunctions(name?: string): void;
-
- /**
- * If name is not provided, removes all PerformanceMark objects from the Performance Timeline.
- * If name is provided, removes only the named mark.
- * @param name
- */
- clearMarks(name?: string): void;
-
- /**
- * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.
- * If name is provided, removes only objects whose performanceEntry.name matches name.
- */
- clearMeasures(name?: string): void;
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
- * @return list of all PerformanceEntry objects
- */
- getEntries(): PerformanceEntry[];
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
- * @param name
- * @param type
- * @return list of all PerformanceEntry objects
- */
- getEntriesByName(name: string, type?: string): PerformanceEntry[];
-
- /**
- * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.entryType is equal to type.
- * @param type
- * @return list of all PerformanceEntry objects
- */
- getEntriesByType(type: string): PerformanceEntry[];
-
- /**
- * Creates a new PerformanceMark entry in the Performance Timeline.
- * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark',
- * and whose performanceEntry.duration is always 0.
- * Performance marks are used to mark specific significant moments in the Performance Timeline.
- * @param name
- */
- mark(name?: string): void;
-
- /**
- * Creates a new PerformanceMeasure entry in the Performance Timeline.
- * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure',
- * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark.
- *
- * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify
- * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist,
- * then startMark is set to timeOrigin by default.
- *
- * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp
- * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown.
- * @param name
- * @param startMark
- * @param endMark
- */
- measure(name: string, startMark: string, endMark: string): void;
-
- /**
- * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones.
- */
- readonly nodeTiming: PerformanceNodeTiming;
-
- /**
- * @return the current high resolution millisecond timestamp
- */
- now(): number;
-
- /**
- * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured.
- */
- readonly timeOrigin: number;
-
- /**
- * Wraps a function within a new function that measures the running time of the wrapped function.
- * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed.
- * @param fn
- */
- timerify<T extends (...optionalParams: any[]) => any>(fn: T): T;
- }
-
- interface PerformanceObserverEntryList {
- /**
- * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
- */
- getEntries(): PerformanceEntry[];
-
- /**
- * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
- */
- getEntriesByName(name: string, type?: string): PerformanceEntry[];
-
- /**
- * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
- * whose performanceEntry.entryType is equal to type.
- */
- getEntriesByType(type: string): PerformanceEntry[];
- }
-
- type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void;
-
- class PerformanceObserver extends AsyncResource {
- constructor(callback: PerformanceObserverCallback);
-
- /**
- * Disconnects the PerformanceObserver instance from all notifications.
- */
- disconnect(): void;
-
- /**
- * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes.
- * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance.
- * Property buffered defaults to false.
- * @param options
- */
- observe(options: { entryTypes: string[], buffered?: boolean }): void;
- }
-
- namespace constants {
- const NODE_PERFORMANCE_GC_MAJOR: number;
- const NODE_PERFORMANCE_GC_MINOR: number;
- const NODE_PERFORMANCE_GC_INCREMENTAL: number;
- const NODE_PERFORMANCE_GC_WEAKCB: number;
- }
-
- const performance: Performance;
-
- interface EventLoopMonitorOptions {
- /**
- * The sampling rate in milliseconds.
- * Must be greater than zero.
- * @default 10
- */
- resolution?: number;
- }
-
- interface EventLoopDelayMonitor {
- /**
- * Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started.
- */
- enable(): boolean;
- /**
- * Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped.
- */
- disable(): boolean;
-
- /**
- * Resets the collected histogram data.
- */
- reset(): void;
-
- /**
- * Returns the value at the given percentile.
- * @param percentile A percentile value between 1 and 100.
- */
- percentile(percentile: number): number;
-
- /**
- * A `Map` object detailing the accumulated percentile distribution.
- */
- readonly percentiles: Map<number, number>;
-
- /**
- * The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold.
- */
- readonly exceeds: number;
-
- /**
- * The minimum recorded event loop delay.
- */
- readonly min: number;
-
- /**
- * The maximum recorded event loop delay.
- */
- readonly max: number;
-
- /**
- * The mean of the recorded event loop delays.
- */
- readonly mean: number;
-
- /**
- * The standard deviation of the recorded event loop delays.
- */
- readonly stddev: number;
- }
-
- function monitorEventLoopDelay(options?: EventLoopMonitorOptions): EventLoopDelayMonitor;
- }
|