node/lib/internal/perf/nodetiming.js
Antoine du Hamel f43d4fafeb
lib: add trailing commas in internal/perf
PR-URL: https://github.com/nodejs/node/pull/46697
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2023-02-20 01:59:21 +01:00

161 lines
3.4 KiB
JavaScript

'use strict';
const {
ObjectDefineProperties,
ObjectSetPrototypeOf,
} = primordials;
const { PerformanceEntry } = require('internal/perf/performance_entry');
const {
now,
getMilestoneTimestamp,
} = require('internal/perf/utils');
const {
customInspectSymbol: kInspect,
} = require('internal/util');
const { inspect } = require('util');
const {
constants: {
NODE_PERFORMANCE_MILESTONE_NODE_START,
NODE_PERFORMANCE_MILESTONE_V8_START,
NODE_PERFORMANCE_MILESTONE_LOOP_START,
NODE_PERFORMANCE_MILESTONE_LOOP_EXIT,
NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE,
NODE_PERFORMANCE_MILESTONE_ENVIRONMENT,
},
loopIdleTime,
} = internalBinding('performance');
class PerformanceNodeTiming {
constructor() {
ObjectDefineProperties(this, {
name: {
__proto__: null,
enumerable: true,
configurable: true,
value: 'node',
},
entryType: {
__proto__: null,
enumerable: true,
configurable: true,
value: 'node',
},
startTime: {
__proto__: null,
enumerable: true,
configurable: true,
value: 0,
},
duration: {
__proto__: null,
enumerable: true,
configurable: true,
get: now,
},
nodeStart: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_NODE_START);
},
},
v8Start: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_V8_START);
},
},
environment: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_ENVIRONMENT);
},
},
loopStart: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_LOOP_START);
},
},
loopExit: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(NODE_PERFORMANCE_MILESTONE_LOOP_EXIT);
},
},
bootstrapComplete: {
__proto__: null,
enumerable: true,
configurable: true,
get() {
return getMilestoneTimestamp(
NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE);
},
},
idleTime: {
__proto__: null,
enumerable: true,
configurable: true,
get: loopIdleTime,
},
});
}
[kInspect](depth, options) {
if (depth < 0) return this;
const opts = {
...options,
depth: options.depth == null ? null : options.depth - 1,
};
return `PerformanceNodeTiming ${inspect(this.toJSON(), opts)}`;
}
toJSON() {
return {
name: 'node',
entryType: 'node',
startTime: this.startTime,
duration: this.duration,
nodeStart: this.nodeStart,
v8Start: this.v8Start,
bootstrapComplete: this.bootstrapComplete,
environment: this.environment,
loopStart: this.loopStart,
loopExit: this.loopExit,
idleTime: this.idleTime,
};
}
}
ObjectSetPrototypeOf(
PerformanceNodeTiming.prototype,
PerformanceEntry.prototype);
module.exports = new PerformanceNodeTiming();