aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js')
-rw-r--r--node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js b/node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js
new file mode 100644
index 0000000..677e0b6
--- /dev/null
+++ b/node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js
@@ -0,0 +1,48 @@
+'use strict';
+
+module.exports = readdirAsync;
+
+const maybe = require('call-me-maybe');
+const DirectoryReader = require('../directory-reader');
+
+let asyncFacade = {
+ fs: require('fs'),
+ forEach: require('./for-each'),
+ async: true
+};
+
+/**
+ * Returns the buffered output from an asynchronous {@link DirectoryReader},
+ * via an error-first callback or a {@link Promise}.
+ *
+ * @param {string} dir
+ * @param {object} [options]
+ * @param {function} [callback]
+ * @param {object} internalOptions
+ */
+function readdirAsync (dir, options, callback, internalOptions) {
+ if (typeof options === 'function') {
+ callback = options;
+ options = undefined;
+ }
+
+ return maybe(callback, new Promise(((resolve, reject) => {
+ let results = [];
+
+ internalOptions.facade = asyncFacade;
+
+ let reader = new DirectoryReader(dir, options, internalOptions);
+ let stream = reader.stream;
+
+ stream.on('error', err => {
+ reject(err);
+ stream.pause();
+ });
+ stream.on('data', result => {
+ results.push(result);
+ });
+ stream.on('end', () => {
+ resolve(results);
+ });
+ })));
+}