|
|
- '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);
- });
- })));
- }
|