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

@stackline/graceful-fs

v1.0.0

Published

A compatibility-first maintained continuation of graceful-fs with bounded filesystem retries.

Readme

@stackline/graceful-fs

A compatibility-first maintained continuation of [email protected].

This package is independently maintained and is not affiliated with or endorsed by the original graceful-fs maintainers.

It preserves the CommonJS fs-like object, the process-wide EMFILE/ENFILE queue, close-triggered retries, streams, gracefulify, deep entry files, and the historical ISC license. It adds independently implemented fixes for non-extensible module namespaces, bounded non-recursive retries, selected path-owned asynchronous EAGAIN failures, and stream lifecycle retention.

npm install @stackline/graceful-fs
const fs = require('@stackline/graceful-fs')

fs.readFile('example.txt', 'utf8', (error, text) => {
  if (error) throw error
  console.log(text)
})

For a migration without source changes, retain the historical dependency key with an npm alias:

{
  "dependencies": {
    "graceful-fs": "npm:@stackline/graceful-fs@^1.0.0"
  }
}

Compatibility choices

  • require('@stackline/graceful-fs') returns an fs-like CommonJS object. It is not a function.
  • Like [email protected], this package has no native ESM or browser entry. Node ESM consumers use the standard CommonJS default-import interop; browser bundling is outside this release's filesystem-runtime contract.
  • EMFILE and ENFILE use the historical five-slot array records in the shared Symbol.for('graceful-fs.queue') queue, so mixed 4.2.11 installations can consume each other's work.
  • EAGAIN has a separate module-local queue and an absolute 60-second deadline. Unrelated descriptor closes cannot extend it.
  • EAGAIN replay is limited to path-owned asynchronous open, readFile, non-append writeFile, copyFile, and readdir. It is deliberately not used for appendFile, append flags, or numeric-descriptor reads/writes, where partial side effects can make replay destructive.
  • This release does not claim to fix the synchronous ZFS operations that motivated pnpm's issue-258 report. Existing read/readSync handling from 4.2.11 remains, but other synchronous APIs are not newly retried.
  • Callback writeFile preserves native option validation and large-buffer behavior. This release deliberately does not add the issue-256 chunking extension because validation must occur before any open or truncate side effect.
  • gracefulify(extensibleFs) patches and returns the object. For a non-extensible ESM namespace it returns a mutable patched clone and leaves the namespace unchanged; callers must use the returned value.

See COMPATIBILITY_CONTRACT.md and MIGRATION.md for the complete contract and limits.

Supported runtimes

The runtime floor is Node 14.14. CI packs and installs the exact candidate on 14.14, 16, 18, 20, 22, 24 and 26. Declarations are tested with TypeScript 3.9 and the current supported compiler. The full correctness suite runs on current supported Node lines, with Linux, macOS and Windows coverage.

Security

Filesystem retry code can affect every caller in a process. Report suspected vulnerabilities privately as described in SECURITY.md. Do not include secrets or exploit payloads in public issues.

Provenance

The only source baseline is the exact ISC-licensed npm artifact for [email protected], SHA-256 3961374aa161e6fed80d6f4b6aaf2fb7eafd2c9e5be34e865b375f0114dd099c. The later BlueOak-licensed upstream repository state was not used as a source baseline. See NOTICE, THIRD_PARTY_LICENSES.md, and UPSTREAM_AUDIT.md.

License

ISC. Copyright and permission notices are preserved in LICENSE.