All files / lib/internal/perf performance_entry.js

100% Statements 86/86
84.61% Branches 11/13
100% Functions 9/9
100% Lines 86/86

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 8731x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 340x 340x 340x 31x 31x 31x 1x 1x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 2x 2x 2x 2x 2x 2x 2x 2x 2x 31x 31x 130x 130x 130x 130x 130x 130x 130x 130x 31x 31x 31x 31x 347x 347x 347x 347x 347x 347x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x 31x  
'use strict';
 
const {
  ObjectSetPrototypeOf,
  Symbol,
} = primordials;
 
const {
  codes: {
    ERR_ILLEGAL_CONSTRUCTOR,
  }
} = require('internal/errors');
 
const {
  customInspectSymbol: kInspect,
} = require('internal/util');
 
const { inspect } = require('util');
 
const kName = Symbol('kName');
const kType = Symbol('kType');
const kStart = Symbol('kStart');
const kDuration = Symbol('kDuration');
const kDetail = Symbol('kDetail');
 
function isPerformanceEntry(obj) {
  return obj?.[kName] !== undefined;
}
 
class PerformanceEntry {
  constructor() {
    throw new ERR_ILLEGAL_CONSTRUCTOR();
  }
 
  get name() { return this[kName]; }
 
  get entryType() { return this[kType]; }
 
  get startTime() { return this[kStart]; }
 
  get duration() { return this[kDuration]; }
 
  get detail() { return this[kDetail]; }
 
  [kInspect](depth, options) {
    if (depth < 0) return this;
 
    const opts = {
      ...options,
      depth: options.depth == null ? null : options.depth - 1
    };
 
    return `${this.constructor.name} ${inspect(this.toJSON(), opts)}`;
  }
 
  toJSON() {
    return {
      name: this.name,
      entryType: this.entryType,
      startTime: this.startTime,
      duration: this.duration,
      detail: this.detail,
    };
  }
}
 
class InternalPerformanceEntry {
  constructor(name, type, start, duration, detail) {
    this[kName] = name;
    this[kType] = type;
    this[kStart] = start;
    this[kDuration] = duration;
    this[kDetail] = detail;
  }
}
 
InternalPerformanceEntry.prototype.constructor = PerformanceEntry;
ObjectSetPrototypeOf(
  InternalPerformanceEntry.prototype,
  PerformanceEntry.prototype);
 
module.exports = {
  InternalPerformanceEntry,
  PerformanceEntry,
  isPerformanceEntry,
};