包详细信息

timer-node

eyas-ranjous36.6kMIT5.0.9

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

timer, timer.js, node timer, js timer

自述文件

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.

更新日志

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[5.0.9] - 2025-01-26

Fixed

  • documentation.

[5.0.8] - 2025-01-25

Fixed

  • refactor & documentation.

[5.0.7] - 2022-12-11

Fixed

  • Detecting if timer was paused when deserialized.

[5.0.6] - 2022-06-19

Fixed

  • README.

[5.0.5] - 2021-06-14

Fixed

  • README.

[5.0.4] - 2021-05-03

Fixed

  • .format custom templates.

[5.0.3] - 2021-04-17

Fixed

  • package.json

[5.0.2] - 2021-03-25

Fixed

  • isRunning.
  • README.

[5.0.1] - 2021-03-24

Fixed

  • benchmark timer label.
  • README.

[5.0.0] - 2021-03-23

Changed

  • A new implementation of the timer based on timestamp.

[4.1.0] - 2021-03-13

Added

  • typescript definitions for the timer.

[4.0.0] - 2021-02-26

Changed

  • replace time funtions with a single .time() function.

Added

.time() returns elapsed time as an object of time fractions. .pause() to pause the timer. .resume() to resume the timer. .isStarted() check if timer is started. .isPaused() check if timer is paused. .isStopped() check if timer is stopped.

[3.1.0] - 2021-02-06

Added

  • static function .benchmark to create a timer for a function call.

Fixed

  • README

[3.0.0] - 2020-07-07

Changed

  • enable chaining from .start(), .stop() & .clear().

[2.0.0] - 2020-04-14

Changed

  • new release.