summaryrefslogtreecommitdiff
path: root/school/node_modules/w3c-hr-time/lib/performance.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
committerMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
commit99c1d9af689e5325f3cf535c4007b3aeb8325229 (patch)
treee663b3c2ebdbd67c818ac0c5147f0ce1d2463cda /school/node_modules/w3c-hr-time/lib/performance.js
parent9871b03912fc28ad38b4037ebf26a78aa937baba (diff)
downloadpluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.gz
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.bz2
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.zip
Update - This is an automated commit
Diffstat (limited to 'school/node_modules/w3c-hr-time/lib/performance.js')
-rw-r--r--school/node_modules/w3c-hr-time/lib/performance.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/school/node_modules/w3c-hr-time/lib/performance.js b/school/node_modules/w3c-hr-time/lib/performance.js
new file mode 100644
index 0000000..4bcfbc3
--- /dev/null
+++ b/school/node_modules/w3c-hr-time/lib/performance.js
@@ -0,0 +1,53 @@
+"use strict";
+
+// Actual implementation of the Performance class.
+
+const clockIsAccurate = require("./clock-is-accurate");
+const calculateClockOffset = require("./calculate-clock-offset");
+const { hrtime, toMS } = require("./utils");
+
+const kTimeOrigin = Symbol("time origin");
+const kTimeOriginTimestamp = Symbol("time origin timestamp");
+
+class Performance {
+ constructor() {
+ // Time origin.
+ const timeOrigin = hrtime();
+ this[kTimeOrigin] = timeOrigin;
+
+ if (clockIsAccurate) {
+ // Let |t1| be the DOMHighResTimeStamp representing the high resolution Unix time at which the global monotonic
+ // clock is zero. This has to be calculated for every Performance object to account for clock drifts.
+ const t1 = calculateClockOffset();
+
+ // Let |t2| be the DOMHighResTimeStamp representing the high resolution time value of the global monotonic clock
+ // at global's time origin.
+ const t2 = toMS(timeOrigin);
+
+ // Return the sum of |t1| and |t2|.
+ this[kTimeOriginTimestamp] = t1 + t2;
+ } else {
+ // Clock isn't accurate enough. Use millisecond accuracy per spec.
+ const cur = Date.now();
+ this[kTimeOriginTimestamp] = cur;
+ }
+ }
+
+ // The timeOrigin getter actually returns the time origin timestamp, not the raw time origin.
+ get timeOrigin() {
+ return this[kTimeOriginTimestamp];
+ }
+
+ now() {
+ const diff = toMS(hrtime(this[kTimeOrigin]));
+ return clockIsAccurate ? diff : Math.round(diff);
+ }
+
+ toJSON() {
+ return {
+ timeOrigin: this.timeOrigin
+ };
+ }
+}
+
+module.exports = { Performance };