Package Exports
- timer-node
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (timer-node) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
timer-node
A timestamp-based timer that enables recording elapsed time and formatting the result.
[Start]---ms---[Pause]--pause ms--[Resume]---ms---[Pause]--pause ms--[Resume]---ms---[Stop]
🔹 It does NOT use setInterval, setTimeout or process
🔹 It works in Javascript ✔️ Typescript ✔️ Nodejs ✔️ and Reactjs ✔️
Table of Contents
Install
npm install --save timer-nodeAPI
require
JS
const { Timer } = require('timer-node');TS
const { Timer, Time, TimerOptions } = require('timer-node');import
JS
import { Timer } from 'timer-node';TS
import { Timer, Time, TimerOptions } from 'timer-node';new
| params |
|---|
| options: object (TimerOptions) |
const timer = new Timer({ label: 'test-timer' });It's also possible to create the timer from a past timestamp. In this case, the timer will be considered started in the past.
const timer = new Timer({
label: 'test-timer',
startTimestamp: 1563074001233 // 2019-07-14 03:13:21.233Z
});
console.log(timer.isStarted()); // true
console.log(timer.time()); // { d: 619, h: 16, m: 26, s: 11, ms: 207 }start
starts the timer.
| return |
|---|
| Timer |
timer.start();isStarted
returns true if the timer was started.
| return |
|---|
| boolean |
console.log(timer.isStarted()); // truestartedAt
returns the starting timestamp.
| return |
|---|
| number |
console.log(timer.startedAt()); // 1616535899945pause
pauses the timer and memoizes elapsed running time.
| return |
|---|
| Timer |
timer.pause();isPaused
returns true if the timer is paused.
| return |
|---|
| boolean |
console.log(timer.isPaused()); // trueresume
resumes the timer by creating a new starting timestamp.
| return |
|---|
| Timer |
timer.resume();isRunning
returns true if the timer is started and not paused or stopped.
| return |
|---|
| boolean |
timer.isRunning(); // truems
returns the running duration in milliseconds. It can be measured while timer is running or when paused or stopped.
| return |
|---|
| number |
// when timer is running, calling .ms() will dynamically calculate progressing milliseconds
console.log(timer.ms()); // 37606
console.log(timer.ms()); // 91843
console.log(timer.ms()); // 135377
// when timer is paused or stopped, .ms() will return the same value
console.log(timer.ms()); // 270754
console.log(timer.ms()); // 270754time
returns the running duration as time fractions. It can be measured while timer is running or when stopped.
| return |
|---|
| object (Time) |
ms: millisecondss: secondsm: minutesh: hoursd: days
// when timer is running, calling .time() will dynamically calculate progressing time
console.log(timer.time()); // { d: 0, h: 0, m: 0, s: 7, ms: 921 }
console.log(timer.time()); // { d: 0, h: 0, m: 4, s: 44, ms: 321 }
console.log(timer.time()); // { d: 0, h: 3, m: 55, s: 12, ms: 910 }
// when timer is paused or stopped, .time() will return the same value
console.log(timer.time()); // { d: 0, h: 4, m: 5, s: 52, ms: 770 }
console.log(timer.time()); // { d: 0, h: 4, m: 5, s: 52, ms: 770 }format
formats the running duration using a custom or default template.
| params | return |
|---|---|
| template: string | string |
The function replaces time placeholders in a string. Placeholders are:
%labelfor timer label.%msfor milliseconds.%sfor seconds.%mfor minutes.%hfor hours.%dfor days.
// using the default template
console.log(timer.format()); // test-timer: 0 d, 1 h, 44 m, 23 s, 977 ms
// using a custom template
console.log(timer.format('%label [%s] seconds [%ms] ms')); // test-timer [4] seconds [254] mspauseMs
returns the pause duration in milliseconds. It can be measured while timer is paused or when running.
| return |
|---|
| number |
// when timer is paused, calling pauseMs will dynamically calculate progressing pause milliseconds
console.log(timer.pauseMs()); // 3878
console.log(timer.pauseMs()); // 5990
console.log(timer.pauseMs()); // 7997
// when timer is resumed, pauseMs will return the same previousely accomulated pauses
timer.stop();
console.log(timer.pauseMs()); // 97264
console.log(timer.pauseMs()); // 97264pauseTime
returns the pause duration as time fractions. It can be measured while timer is paused or when running.
| return |
|---|
| object (Time) |
ms: millisecondss: secondsm: minutesh: hoursd: days
// when timer is paused, calling pauseMs will dynamically calculate progressing pause time
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 4, ms: 675 }
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 6, ms: 328 }
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 7, ms: 904 }
// when timer is resumed, pauseMs will return the same previousely accomulated pauses
timer.resume();
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 12, ms: 143 }
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 12, ms: 143 }pauseCount
returns the number of times the timer was paused.
| return |
|---|
| number |
console.log(timer.pauseCount()); // 2stop
stops the timer. The timer can be started again by calling .start() which clears all recorded values.
| return |
|---|
| Timer |
timer.stop();
console.log(timer.time()); // { d: 0, h: 0, m: 2, s: 44, ms: 453 }
console.log(timer.time()); // { d: 0, h: 0, m: 2, s: 44, ms: 453 }isStopped
checks if the timer has been stopped.
| return |
|---|
| boolean |
console.log(timer.isStopped()); // truestoppedAt
returns the stop timestamp.
| return |
|---|
| number |
console.log(timer.stoppedAt()); // undefined
timer.stop();
console.log(timer.stoppedAt()); // 1616535948456serialize
serializes the timer in its current state.
| return |
|---|
| string |
console.log(timer.serialize());
// '{"startTimestamp":1616535216209,"currentStartTimestamp":1616535227790,"endTimestamp":1616535258945,"accumulatedMs":6249,"pauseCount":3,"label":"test"}'getLabel
returns the timer's label
| return |
|---|
| string |
console.log(timer.getLabel()); // test-timerclear
clears the timer values. can be started again by calling .start().
| return |
|---|
| Timer |
timer.clear();
console.log(timer.time()); // { d: 0, h: 0, m: 0, s: 0, ms: 0 }
console.log(timer.pauseTime()); // { d: 0, h: 0, m: 0, s: 0, ms: 0 }Timer.deserialize
re-construct a timer from its serialized form.
| return |
|---|
| Timer |
const timerStr = '{"startTimestamp":1616535216209,"currentStartTimestamp":1616535227790,"endTimestamp":1616535258945,"accumulatedMs":6249,"pauseCount":3,"label":"test"}';
const timer = Timer.deserialize(timerStr);
console.log(timer.isStopped()); // true
console.log(timer.time()); // { d: 0, h: 0, m: 0, s: 37, ms: 404 }Timer.benchmark(fn)
creates a benchmark timer for a function call.
| params | return |
|---|---|
| fn: function | Timer |
const fn = (a) => {
let sum = 0;
for (let i = 0; i < 10000000; i += 1) {
sum += a * i;
}
return sum;
}
const benchmark = Timer.benchmark(fn.bind(fn, 5));
console.log(benchmark.time()); // { d: 0, h: 0, m: 0, s: 0, ms: 53 }
console.log(benchmark.format('%label: %ms ms')); // bound fn: 53 msBuild
grunt buildLicense
The MIT License. Full License is here