JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 27569
  • Score
    100M100P100Q131543F
  • License MIT

A timestamp-based timer that enables recording elapsed time and formatting the result.

Package Exports

  • timer-node
  • timer-node/index.js

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

npm npm

A lightweight JavaScript library for measuring elapsed time in Node.js or the browser without using setInterval or setTimeout. It also has type definitions for TypeScript.

Installation

npm install timer-node

API

Import

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

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

Timer Class

A timestamp-based timer that can be started, paused, resumed, and stopped. It calculates durations based on system time.

Constructor

new Timer(options?: TimerOptions)
  • options: An optional configuration object with:
    • label?: string – A label for this timer.
    • startTimestamp?: number – Start time (if you want to initialize from the past).
    • endTimestamp?: number – End time (if already stopped).
    • currentStartTimestamp?: number – Most recent resume time.
    • pauseCount?: number – Number of times paused.
    • accumulatedMs?: number – Accumulated milliseconds from previous runs.

Common Methods

  • start(): Starts (or restarts) the timer.
  • pause(): Pauses the timer (if running).
  • resume(): Resumes the timer (if paused).
  • stop(): Stops the timer.
  • clear(): Clears all timer data, resetting it to an unstarted state.
  • isStarted() / isPaused() / isRunning() / isStopped(): Check the timer state.
  • ms(): Returns the elapsed time in milliseconds.
  • time(): Returns an object of time fractions (d, h, m, s, ms).
  • pauseMs() / pauseTime(): Similar to ms() / time(), but for paused duration.
  • pauseCount(): Returns how many times the timer has been paused.
  • format(template?: string): Formats the elapsed time using placeholders (%label, %d, %h, %m, %s, %ms).
  • serialize(): Returns a JSON string representing the timer state.

Static Methods

  • Timer.deserialize(serializedTimer: string): Timer
    Re-creates a timer from a serialized string generated by .serialize().

  • Timer.benchmark(fn: () => any): Timer
    Measures the synchronous execution time of fn. Returns a stopped Timer.


Time Object

Any method returning an object breakdown of time uses the following shape:

interface Time {
  d: number;  // days
  h: number;  // hours
  m: number;  // minutes
  s: number;  // seconds
  ms: number; // milliseconds
}

Example

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

const timer = new Timer({ label: 'demo' });
timer.start();

// ... some operations ...

timer.pause();
console.log('Paused at', timer.ms(), 'ms');
timer.resume();

// ... more operations ...

timer.stop();
console.log('Total elapsed:', timer.time());
// e.g. { d: 0, h: 0, m: 1, s: 12, ms: 345 }

License

This library is licensed under the MIT License. See LICENSE for details.