.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / @mrmlnc / readdir-enhanced / lib / async / index.js
1 'use strict';
2
3 module.exports = readdirAsync;
4
5 const maybe = require('call-me-maybe');
6 const DirectoryReader = require('../directory-reader');
7
8 let asyncFacade = {
9   fs: require('fs'),
10   forEach: require('./for-each'),
11   async: true
12 };
13
14 /**
15  * Returns the buffered output from an asynchronous {@link DirectoryReader},
16  * via an error-first callback or a {@link Promise}.
17  *
18  * @param {string} dir
19  * @param {object} [options]
20  * @param {function} [callback]
21  * @param {object} internalOptions
22  */
23 function readdirAsync (dir, options, callback, internalOptions) {
24   if (typeof options === 'function') {
25     callback = options;
26     options = undefined;
27   }
28
29   return maybe(callback, new Promise(((resolve, reject) => {
30     let results = [];
31
32     internalOptions.facade = asyncFacade;
33
34     let reader = new DirectoryReader(dir, options, internalOptions);
35     let stream = reader.stream;
36
37     stream.on('error', err => {
38       reject(err);
39       stream.pause();
40     });
41     stream.on('data', result => {
42       results.push(result);
43     });
44     stream.on('end', () => {
45       resolve(results);
46     });
47   })));
48 }