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.
		
		
		
		
			
				
					67 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.3 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								module.exports = realpath
							 | 
						||
| 
								 | 
							
								realpath.realpath = realpath
							 | 
						||
| 
								 | 
							
								realpath.sync = realpathSync
							 | 
						||
| 
								 | 
							
								realpath.realpathSync = realpathSync
							 | 
						||
| 
								 | 
							
								realpath.monkeypatch = monkeypatch
							 | 
						||
| 
								 | 
							
								realpath.unmonkeypatch = unmonkeypatch
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var fs = require('fs')
							 | 
						||
| 
								 | 
							
								var origRealpath = fs.realpath
							 | 
						||
| 
								 | 
							
								var origRealpathSync = fs.realpathSync
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var version = process.version
							 | 
						||
| 
								 | 
							
								var ok = /^v[0-5]\./.test(version)
							 | 
						||
| 
								 | 
							
								var old = require('./old.js')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function newError (er) {
							 | 
						||
| 
								 | 
							
								  return er && er.syscall === 'realpath' && (
							 | 
						||
| 
								 | 
							
								    er.code === 'ELOOP' ||
							 | 
						||
| 
								 | 
							
								    er.code === 'ENOMEM' ||
							 | 
						||
| 
								 | 
							
								    er.code === 'ENAMETOOLONG'
							 | 
						||
| 
								 | 
							
								  )
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function realpath (p, cache, cb) {
							 | 
						||
| 
								 | 
							
								  if (ok) {
							 | 
						||
| 
								 | 
							
								    return origRealpath(p, cache, cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof cache === 'function') {
							 | 
						||
| 
								 | 
							
								    cb = cache
							 | 
						||
| 
								 | 
							
								    cache = null
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  origRealpath(p, cache, function (er, result) {
							 | 
						||
| 
								 | 
							
								    if (newError(er)) {
							 | 
						||
| 
								 | 
							
								      old.realpath(p, cache, cb)
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      cb(er, result)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function realpathSync (p, cache) {
							 | 
						||
| 
								 | 
							
								  if (ok) {
							 | 
						||
| 
								 | 
							
								    return origRealpathSync(p, cache)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    return origRealpathSync(p, cache)
							 | 
						||
| 
								 | 
							
								  } catch (er) {
							 | 
						||
| 
								 | 
							
								    if (newError(er)) {
							 | 
						||
| 
								 | 
							
								      return old.realpathSync(p, cache)
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      throw er
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function monkeypatch () {
							 | 
						||
| 
								 | 
							
								  fs.realpath = realpath
							 | 
						||
| 
								 | 
							
								  fs.realpathSync = realpathSync
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function unmonkeypatch () {
							 | 
						||
| 
								 | 
							
								  fs.realpath = origRealpath
							 | 
						||
| 
								 | 
							
								  fs.realpathSync = origRealpathSync
							 | 
						||
| 
								 | 
							
								}
							 |