You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							49 lines
						
					
					
						
							1.1 KiB
						
					
					
				| '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);
 | |
|     });
 | |
|   })));
 | |
| }
 |