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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nrz/cache-unzip

v1.0.0

Published

Daemon that manages the @nrz/cache disk store

Readme

cache-unzip

@nrz/cache-unzip

This is a script that can be run as a detached background process to un-gzip any cached response bodies in the nrz cache, and to explode cached tarballs into the global store.

Usage · Global Store · Why Do This?

Usage

Whenever you get a cache entry with a gzipped body, tell this module about it.

import { register } from '@nrz/cache-unzip'
import { Cache } from '@nrz/cache'

const cache = new Cache({ path: cachePath })

// later...

const response = get_response_cache_entry_somehow()
cache.set(myKey, response.encode())

// unzip it after this process is done
if (response.isGzip) {
  register(cachePath, myKey)
}

On process exit, these registered keys will be passed as arguments to a detached deref'ed nrz-cache-unzip process. So, the main program exits normally, but the child process ignores the SIGHUP and keeps going until it's done. The next time that cache entry is read, it won't have to be unzipped. It exits 1 only on no path, a corrupt gzip body or a failed explode.

Global Store

Pass the global store root as a third argument to register(), and optionally the tarball's integrity, for entries that may only be cached under it:

register(cachePath, myKey, storeRoot, integrity)

When NRZ_STORE_LINKER is auto, hardlink, clone or copy, the child also explodes each tarball entry with a sha512 integrity header into <storeRoot>/<integrity-hex>/, with its sidecar index next to it at <integrity-hex>.json. Unset or unpack: nothing is written there.

  • Existing entries are skipped, unless their sidecar is missing or invalid: then they are redone. Bad tarballs are skipped too.
  • Entries are built in <storeRoot>/.tmp/ and renamed into place, sidecar first. If another process wins the rename, its entry is kept. Leftovers older than one hour are removed.
  • Explode runs first. Entries it writes stay gzipped: installs link them from the store. The rest are un-gzipped: store off, already in the store, not a tarball, no sha512 integrity, failed. So a gzipped entry registered again by an install that read it instead of linking it (say, after switching to store-linker=unpack) is un-gzipped.
  • NRZ_CACHE_UNZIP=0 never un-gzips. NRZ_CACHE_UNZIP=1 un-gzips every entry before exploding.
  • NRZ_CACHE_EXPLODE_CONCURRENCY sets how many entries are read at once (default 1).
  • NODE_DEBUG=nrz prints a summary to stderr, seen only when the child is run by hand (nrz ignores its output): keys read, exploded and un-gzipped, and with the store on, entries written, skipped (already there), ignored (missing or not a tarball), failed, bytes, ms.

With the global store on, the child runs at the lowest CPU priority.

Why Do This

Because it's faster to not have to decompress the same content more times than necessary.