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

snoww

v1.0.0

Published

Snoww is a lightweight TypeScript library for generating Snowflake IDs

Readme

Snoww

Snoww is a lightweight TypeScript library for generating unique 64-bit IDs at high scale with some simple guarantees.

Snoww is based on Discord's implementation of Twitter's Snowflake ID format.

Binary Representation

111111111111111111111111111111111111111111 11111 11111 111111111111
64                                         22    17    12          0

Format Structure

| Field | Bits | Number of bits | Description | |------------|----------|----------------|---------------------------------------| | Timestamp | 63 to 22 | 42 bits | Milliseconds since the Epoch | | Worker ID | 21 to 17 | 5 bits | Worker ID | | Process ID | 16 to 12 | 5 bits | Process ID | | Increment | 11 to 0 | 12 bits | Increment within the same millisecond |

Installation

npm install snoww

Usage

import { SnowflakeFactory } from "snoww";

// Create a snowflake generator
const snowflake = new SnowflakeFactory({
    epoch: new Date("2020-01-01"),  // Required: epoch timestamp
    workerId: 1,                    // Optional: defaults to 0
    processId: 0                    // Optional: defaults to 0
});

// Generate IDs
const id = snowflake.generate(); // Returns bigint
const idString = id.toString();  // Convert to string

// Deconstruct ID
const parts = snowflake.deconstruct(id);
// { id, epoch, timestamp, workerId, processId, increment }

// Extract timestamp
const timestamp = snowflake.timestamp(id);
const date = new Date(timestamp);

// Create ID from timestamp
const boundaryId = snowflake.fromTimestamp(new Date("2024-01-01"), 0);

// Compare IDs
SnowflakeFactory.compare(id1, id2); // Returns: -1, 0, or 1

// Sort array of IDs
ids.sort((a, b) => SnowflakeFactory.compare(a, b));

License

MIT