@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
46 lines (42 loc) • 3.6 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
class Timer {
/**
* The start time.
*/
startTime;
/**
* The end time.
*/
endTime;
constructor() {
this.startTime = process.hrtime();
}
/**
* Reset the timer.
*/
reset() {
this.startTime = process.hrtime();
this.endTime = void 0;
}
/**
* Stop the timer.
*
* @returns The total duration in ms as a `float`
*/
stop() {
this.endTime = process.hrtime(this.startTime);
return this.getResult();
}
/**
* Get the total duration.
*
* @returns The total duration in ms as a `float`
*/
getResult() {
if (!this.endTime) throw new Error(`You need to stop the timer before getting the result.`);
return Number.parseFloat(((this.endTime[0] * 1e9 + this.endTime[1]) / 1e6).toFixed(3));
}
}
exports.default = Timer;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZXIuY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1RpbWVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGltZXIvUGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgdXRpbGl0eS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGltZXIge1xuICAgIC8qKlxuICAgICAqIFRoZSBzdGFydCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhcnRUaW1lOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGVuZCB0aW1lLlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5kVGltZTogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSB0aW1lci5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICAgICAgdGhpcy5lbmRUaW1lID0gdW5kZWZpbmVkITtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdG9wIHRoZSB0aW1lci5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB0b3RhbCBkdXJhdGlvbiBpbiBtcyBhcyBhIGBmbG9hdGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RvcCgpOiBudW1iZXIge1xuICAgICAgICB0aGlzLmVuZFRpbWUgPSBwcm9jZXNzLmhydGltZSh0aGlzLnN0YXJ0VGltZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVzdWx0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB0b3RhbCBkdXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFRoZSB0b3RhbCBkdXJhdGlvbiBpbiBtcyBhcyBhIGBmbG9hdGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UmVzdWx0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy5lbmRUaW1lKSB0aHJvdyBuZXcgRXJyb3IoYFlvdSBuZWVkIHRvIHN0b3AgdGhlIHRpbWVyIGJlZm9yZSBnZXR0aW5nIHRoZSByZXN1bHQuYCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KCgodGhpcy5lbmRUaW1lWzBdICogMWU5ICsgdGhpcy5lbmRUaW1lWzFdKSAvIDFfMDAwXzAwMCkudG9GaXhlZCgzKSk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxNQUFxQixLQUFNLENBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlmLFNBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLE9BQUE7QUFBQSxFQUVELFdBQWMsR0FBQTtBQUNqQixJQUFLLElBQUEsQ0FBQSxTQUFBLEdBQVksUUFBUSxNQUFPLEVBQUE7QUFBQTtBQUNwQztBQUFBO0FBQUE7QUFBQSxFQUtPLEtBQVEsR0FBQTtBQUNYLElBQUssSUFBQSxDQUFBLFNBQUEsR0FBWSxRQUFRLE1BQU8sRUFBQTtBQUNoQyxJQUFBLElBQUEsQ0FBSyxPQUFVLEdBQUEsS0FBQSxDQUFBO0FBQUE7QUFDbkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sSUFBZSxHQUFBO0FBQ2xCLElBQUEsSUFBQSxDQUFLLE9BQVUsR0FBQSxPQUFBLENBQVEsTUFBTyxDQUFBLElBQUEsQ0FBSyxTQUFTLENBQUE7QUFFNUMsSUFBQSxPQUFPLEtBQUssU0FBVSxFQUFBO0FBQUE7QUFDMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sU0FBb0IsR0FBQTtBQUN2QixJQUFBLElBQUksQ0FBQyxJQUFLLENBQUEsT0FBQSxFQUFlLE1BQUEsSUFBSSxNQUFNLENBQXVELHFEQUFBLENBQUEsQ0FBQTtBQUUxRixJQUFBLE9BQU8sTUFBTyxDQUFBLFVBQUEsQ0FBQSxDQUFBLENBQWEsSUFBSyxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUksR0FBQSxHQUFBLEdBQU0sSUFBSyxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUEsSUFBSyxHQUFXLEVBQUEsT0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBO0FBQUE7QUFFbkc7Ozs7In0=