From 5a901e7957a355d3b216ff228f4fc72c03b96132 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 30 Apr 2026 22:42:28 +0200 Subject: [PATCH] feat(fs.graceful-fs): expose promisified chmod and unlink (#11413) * feat(fs.graceful-fs): expose promisified chmod and unlink So callers can perform mode changes and removals through the same EMFILE/ENFILE-queueing layer as the other operations. * chore: remove ENFILE word to satisfy cspell --- .changeset/graceful-fs-chmod-unlink.md | 5 +++++ fs/graceful-fs/src/index.ts | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/graceful-fs-chmod-unlink.md diff --git a/.changeset/graceful-fs-chmod-unlink.md b/.changeset/graceful-fs-chmod-unlink.md new file mode 100644 index 0000000000..a30239c11a --- /dev/null +++ b/.changeset/graceful-fs-chmod-unlink.md @@ -0,0 +1,5 @@ +--- +"@pnpm/fs.graceful-fs": minor +--- + +Add `chmod` and `unlink` (promisified) to the exported fs interface so callers can perform mode changes and removals through the same EMFILE-queueing layer as the other operations. diff --git a/fs/graceful-fs/src/index.ts b/fs/graceful-fs/src/index.ts index 93603542aa..fc9a9a476f 100644 --- a/fs/graceful-fs/src/index.ts +++ b/fs/graceful-fs/src/index.ts @@ -3,6 +3,7 @@ import util, { promisify } from 'node:util' import gfs from 'graceful-fs' export default { // eslint-disable-line + chmod: promisify(gfs.chmod), copyFile: promisify(gfs.copyFile), copyFileSync: withEagainRetry(gfs.copyFileSync), createReadStream: gfs.createReadStream, @@ -16,6 +17,7 @@ export default { // eslint-disable-line readdirSync: gfs.readdirSync, stat: promisify(gfs.stat), statSync: gfs.statSync, + unlink: promisify(gfs.unlink), unlinkSync: gfs.unlinkSync, writeFile: promisify(gfs.writeFile), writeFileSync: withEagainRetry(gfs.writeFileSync),