"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");constclockIsAccurate=require("./clock-is-accurate");// This function assumes the clock is accurate.functioncalculateClockOffset(){conststart=Date.now();letcur=start;// Limit the iterations, just in case we're running in an environment where Date.now() has been mocked and is// constant.for(leti=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.returncur-getGlobalMonotonicClockMS();}if(clockIsAccurate){// Warm up the function.calculateClockOffset();calculateClockOffset();calculateClockOffset();module.exports=calculateClockOffset;}else{module.exports=undefined;}