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.
		
		
		
		
		
			
		
			
				
					
					
						
							40 lines
						
					
					
						
							969 B
						
					
					
				
			
		
		
	
	
							40 lines
						
					
					
						
							969 B
						
					
					
				| const {dirname} = require('path')
 | |
| const {findMade, findMadeSync} = require('./find-made.js')
 | |
| const {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')
 | |
| 
 | |
| const mkdirpNative = (path, opts) => {
 | |
|   opts.recursive = true
 | |
|   const parent = dirname(path)
 | |
|   if (parent === path)
 | |
|     return opts.mkdirAsync(path, opts)
 | |
| 
 | |
|   return findMade(opts, path).then(made =>
 | |
|     opts.mkdirAsync(path, opts).then(() => made)
 | |
|     .catch(er => {
 | |
|       if (er.code === 'ENOENT')
 | |
|         return mkdirpManual(path, opts)
 | |
|       else
 | |
|         throw er
 | |
|     }))
 | |
| }
 | |
| 
 | |
| const mkdirpNativeSync = (path, opts) => {
 | |
|   opts.recursive = true
 | |
|   const parent = dirname(path)
 | |
|   if (parent === path)
 | |
|     return opts.mkdirSync(path, opts)
 | |
| 
 | |
|   const made = findMadeSync(opts, path)
 | |
|   try {
 | |
|     opts.mkdirSync(path, opts)
 | |
|     return made
 | |
|   } catch (er) {
 | |
|     if (er.code === 'ENOENT')
 | |
|       return mkdirpManualSync(path, opts)
 | |
|     else
 | |
|       throw er
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = {mkdirpNative, mkdirpNativeSync}
 |