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