Spaces:
Sleeping
Sleeping
; | |
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); | |
}); | |
}))); | |
} | |