timer-node
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.5 • Public • Published

    timer-node

    build:? npm npm npm

    A timestamp-based timer that enables recording elapsed time and formatting the result. It does NOT use setInterval, setTimeout or process

    [Start]---ms---[Pause]--pause ms--[Resume]---ms---[Pause]--pause ms--[Resume]---ms---[Stop]

    Contents

    Install

    npm install --save timer-node
    

    require

    const { Timer } = require('timer-node');

    import

    import { Timer, Time, TimerOptions } from 'timer-node';

    API

    constructor

    params
    options: 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()); // true

    startedAt

    returns the starting timestamp.

    return
    number
    console.log(timer.startedAt()); // 1616535899945

    pause

    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()); // true

    resume

    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(); // true

    ms

    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()); // 270754

    time

    returns the running duration as time fractions. It can be measured while timer is running or when stopped.

    return
    object (Time)
    • ms: milliseconds
    • s: seconds
    • m: minutes
    • h: hours
    • d: 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:

    • %label for timer label.
    • %ms for milliseconds.
    • %s for seconds.
    • %m for minutes.
    • %h for hours.
    • %d for 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] ms

    pauseMs

    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()); // 97264

    pauseTime

    returns the pause duration as time fractions. It can be measured while timer is paused or when running.

    return
    object (Time)
    • ms: milliseconds
    • s: seconds
    • m: minutes
    • h: hours
    • d: 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()); // 2

    stop

    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()); // true

    stoppedAt

    returns the stop timestamp.

    return
    number
    console.log(timer.stoppedAt()); // undefined
    timer.stop();
    console.log(timer.stoppedAt()); // 1616535948456

    serialize

    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-timer

    clear

    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 ms

    Build

    grunt build
    

    License

    The MIT License. Full License is here

    Install

    npm i timer-node

    DownloadsWeekly Downloads

    2,208

    Version

    5.0.5

    License

    MIT

    Unpacked Size

    21.7 kB

    Total Files

    9

    Last publish

    Collaborators

    • eyas-ranjous