From e9c94a6e3ea5d6ee91ef85d62d27e1ce13b2bb32 Mon Sep 17 00:00:00 2001 From: Feng Yu Date: Sun, 22 May 2022 21:12:11 +0800 Subject: [PATCH] fs: export constants from `fs/promises` --- doc/api/fs.md | 17 ++++++++++++----- lib/internal/fs/promises.js | 5 ++++- test/parallel/test-fs-promises-exists.js | 5 ++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/doc/api/fs.md b/doc/api/fs.md index c4e0251a7979ae..37aec58f2cf6d2 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -789,8 +789,7 @@ with an {Error} object. The following example checks if the file `/etc/passwd` can be read and written by the current process. ```mjs -import { access } from 'node:fs/promises'; -import { constants } from 'node:fs'; +import { access, constants } from 'node:fs/promises'; try { await access('/etc/passwd', constants.R_OK | constants.W_OK); @@ -892,8 +891,7 @@ error occurs after the destination file has been opened for writing, an attempt will be made to remove the destination. ```mjs -import { constants } from 'node:fs'; -import { copyFile } from 'node:fs/promises'; +import { copyFile, constants } from 'node:fs/promises'; try { await copyFile('source.txt', 'destination.txt'); @@ -1624,6 +1622,14 @@ try { Aborting an ongoing request does not abort individual operating system requests but rather the internal buffering `fs.writeFile` performs. +### `fsPromises.constants` + +* {Object} + +Returns an object containing commonly used constants for file system +operations. The object is the same as `fs.constants`. See [FS constants][] +for more details. + ## Callback API The callback APIs perform all operations asynchronously, without blocking the @@ -6885,7 +6891,7 @@ operations. #### FS constants -The following constants are exported by `fs.constants`. +The following constants are exported by `fs.constants` and `fsPromises.constants`. Not every constant will be available on every operating system; this is especially important for Windows, where many of the POSIX specific @@ -7590,6 +7596,7 @@ the file contents. [#25741]: https://github.com/nodejs/node/issues/25741 [Common System Errors]: errors.md#common-system-errors +[FS constants]: #fs-constants [File access constants]: #file-access-constants [MDN-Date]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date [MDN-Number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index c3c5874453a8b6..5f29a1df98bf61 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -17,13 +17,15 @@ const { Uint8Array, } = primordials; +const { fs: constants } = internalBinding('constants'); const { F_OK, O_SYMLINK, O_WRONLY, S_IFMT, S_IFREG -} = internalBinding('constants').fs; +} = constants; + const binding = internalBinding('fs'); const { Buffer } = require('buffer'); @@ -899,6 +901,7 @@ module.exports = { appendFile, readFile, watch, + constants, }, FileHandle, diff --git a/test/parallel/test-fs-promises-exists.js b/test/parallel/test-fs-promises-exists.js index d56308257e6b17..b9bbeee1de97fd 100644 --- a/test/parallel/test-fs-promises-exists.js +++ b/test/parallel/test-fs-promises-exists.js @@ -2,5 +2,8 @@ require('../common'); const assert = require('assert'); +const fs = require('fs'); +const fsPromises = require('fs/promises'); -assert.strictEqual(require('fs/promises'), require('fs').promises); +assert.strictEqual(fsPromises, fs.promises); +assert.strictEqual(fsPromises.constants, fs.constants);