npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

timer-node

v5.0.9

Published

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

Downloads

41,686

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.