summaryrefslogtreecommitdiff
path: root/lib/internal/fs/promises.js
diff options
context:
space:
mode:
authorBryan English <bryan@bryanenglish.com>2018-07-27 19:29:32 -0700
committerBryan English <bryan@bryanenglish.com>2018-08-13 19:18:45 -0700
commitc7944a7a7bd92a446ea81d774ccad31e0e7c8a3f (patch)
treec7b86a281f2af282e080b34965debcea28caf2b7 /lib/internal/fs/promises.js
parent78584b64d88c0567c46e3cf7bae42aa73927df40 (diff)
downloadandroid-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.js12
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) {