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.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							918 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							918 B
						
					
					
				| const { readdir } = require("../compat/fs"); | |
| const { init, walkSingleDir, readdirOpts } = require("./shared"); | |
| 
 | |
| function promise(dir, options) { | |
|   return new Promise((resolve, reject) => { | |
|     callback(dir, options, (err, output) => { | |
|       if (err) return reject(err); | |
|       resolve(output); | |
|     }); | |
|   }); | |
| } | |
| 
 | |
| function callback(dirPath, options, callback) { | |
|   const { state, callbackInvoker, dir } = init(dirPath, options, callback); | |
|   walk(state, dir, options.maxDepth, callbackInvoker); | |
| } | |
| 
 | |
| function walk(state, dir, currentDepth, callback) { | |
|   if (currentDepth < 0) { | |
|     --state.queue; | |
|     return; | |
|   } | |
|   readdir(dir, readdirOpts, function(error, dirents) { | |
|     if (error) { | |
|       --state.queue; | |
|       callback(error, state); | |
|       return; | |
|     } | |
| 
 | |
|     walkSingleDir(walk, state, dir, dirents, currentDepth, callback); | |
|     if (--state.queue < 0) callback(null, state); | |
|   }); | |
| } | |
| 
 | |
| module.exports = { promise, callback };
 | |
| 
 | 
