@@ -25,6 +25,17 @@ var defaultIsDir = function isDirectory(dir, cb) {
2525 } ) ;
2626} ;
2727
28+ var maybeUnwrapSymlink = function maybeUnwrapSymlink ( x , opts , cb ) {
29+ if ( ! opts || ! opts . preserveSymlinks ) {
30+ fs . realpath ( x , function ( realPathErr , realPath ) {
31+ if ( realPathErr && realPathErr . code !== 'ENOENT' ) cb ( realPathErr ) ;
32+ else cb ( null , realPathErr ? x : realPath ) ;
33+ } ) ;
34+ } else {
35+ cb ( null , x ) ;
36+ }
37+ } ;
38+
2839module . exports = function resolve ( x , options , callback ) {
2940 var cb = callback ;
3041 var opts = options ;
@@ -54,14 +65,14 @@ module.exports = function resolve(x, options, callback) {
5465 // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
5566 var absoluteStart = path . resolve ( basedir ) ;
5667
57- if ( ! opts || ! opts . preserveSymlinks ) {
58- fs . realpath ( absoluteStart , function ( realPathErr , realStart ) {
59- if ( realPathErr && realPathErr . code !== 'ENOENT' ) cb ( err ) ;
60- else validateBasedir ( realPathErr ? absoluteStart : realStart ) ;
61- } ) ;
62- } else {
63- validateBasedir ( absoluteStart ) ;
64- }
68+ maybeUnwrapSymlink (
69+ absoluteStart ,
70+ opts ,
71+ function ( err , realStart ) {
72+ if ( err ) cb ( err ) ;
73+ else validateBasedir ( realStart ) ;
74+ }
75+ ) ;
6576
6677 function validateBasedir ( basedir ) {
6778 if ( opts . basedir ) {
0 commit comments