diff options
author | Bryan English <bryan@bryanenglish.com> | 2018-07-27 19:29:32 -0700 |
---|---|---|
committer | Bryan English <bryan@bryanenglish.com> | 2018-08-13 19:18:45 -0700 |
commit | c7944a7a7bd92a446ea81d774ccad31e0e7c8a3f (patch) | |
tree | c7b86a281f2af282e080b34965debcea28caf2b7 /lib/internal/fs/promises.js | |
parent | 78584b64d88c0567c46e3cf7bae42aa73927df40 (diff) | |
download | android-node-v8-c7944a7a7bd92a446ea81d774ccad31e0e7c8a3f.tar.gz android-node-v8-c7944a7a7bd92a446ea81d774ccad31e0e7c8a3f.tar.bz2 android-node-v8-c7944a7a7bd92a446ea81d774ccad31e0e7c8a3f.zip |
fs: readdir optionally returning type information
readdir and readdirSync now have a "withFileTypes" option, which, when
enabled, provides an array of DirectoryEntry objects, similar to Stats
objects, which have the filename and the type information.
Refs: https://github.com/nodejs/node/issues/15699
PR-URL: https://github.com/nodejs/node/pull/22020
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: John-David Dalton <john.david.dalton@gmail.com>
Diffstat (limited to 'lib/internal/fs/promises.js')
-rw-r--r-- | lib/internal/fs/promises.js | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index e8cb2317fa..e0ddee4c7f 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -19,6 +19,7 @@ const { getPathFromURL } = require('internal/url'); const { isUint8Array } = require('internal/util/types'); const { copyObject, + getDirents, getOptions, getStatsFromBinding, nullCheck, @@ -37,10 +38,13 @@ const { validateUint32 } = require('internal/validators'); const pathModule = require('path'); +const { promisify } = require('internal/util'); const kHandle = Symbol('handle'); const { kUsePromises } = binding; +const getDirectoryEntriesPromise = promisify(getDirents); + class FileHandle { constructor(filehandle) { this[kHandle] = filehandle; @@ -312,8 +316,12 @@ async function readdir(path, options) { options = getOptions(options, {}); path = getPathFromURL(path); validatePath(path); - return binding.readdir(pathModule.toNamespacedPath(path), - options.encoding, kUsePromises); + const result = await binding.readdir(pathModule.toNamespacedPath(path), + options.encoding, !!options.withTypes, + kUsePromises); + return options.withFileTypes ? + getDirectoryEntriesPromise(path, result) : + result; } async function readlink(path, options) { |