Sha256: 59c460fca73e92f034d6a18092bba1b9fc60de1f148592f79f39bc1a07279616

Contents?: true

Size: 1.47 KB

Versions: 20

Compression:

Stored size: 1.47 KB

Contents

"use strict";

// This files implements the calculation of the offset between the global monotonic clock and UNIX time. This value is
// known as |t1| in the calculation of "time origin timestamp" in the spec. This value needs to be calculated once and
// can be used in all subsequent Performance instances.
//
// However, if the clock is not fast enough, the export is undefined to signify that we should use Date.now() to get the
// time origin timestamp with millisecond accuracy, per spec.

const { getGlobalMonotonicClockMS } = require("./global-monotonic-clock");
const clockIsAccurate = require("./clock-is-accurate");

// This function assumes the clock is accurate.
function calculateClockOffset() {
  const start = Date.now();
  let cur = start;
  // Limit the iterations, just in case we're running in an environment where Date.now() has been mocked and is
  // constant.
  for (let i = 0; i < 1e6 && cur === start; i++) {
    cur = Date.now();
  }

  // At this point |cur| "just" became equal to the next millisecond -- the unseen digits after |cur| are approximately
  // all 0, and |cur| is the closest to the actual value of the UNIX time. Now, get the current global monotonic clock
  // value and do the remaining calculations.

  return cur - getGlobalMonotonicClockMS();
}

if (clockIsAccurate) {
  // Warm up the function.
  calculateClockOffset();
  calculateClockOffset();
  calculateClockOffset();

  module.exports = calculateClockOffset;
} else {
  module.exports = undefined;
}

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
appmap-0.72.2 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.72.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.72.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.71.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.70.2 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.70.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.70.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.69.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.68.2 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.68.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.68.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.67.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.67.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.66.2 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.66.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.66.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.65.1 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.65.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.64.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js
appmap-0.63.0 ./node_modules/w3c-hr-time/lib/calculate-clock-offset.js