@@ -25,6 +25,17 @@ var defaultIsDir = function isDirectory(dir, cb) {
25
25
} ) ;
26
26
} ;
27
27
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
+
28
39
module . exports = function resolve ( x , options , callback ) {
29
40
var cb = callback ;
30
41
var opts = options ;
@@ -54,14 +65,14 @@ module.exports = function resolve(x, options, callback) {
54
65
// ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
55
66
var absoluteStart = path . resolve ( basedir ) ;
56
67
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
+ ) ;
65
76
66
77
function validateBasedir ( basedir ) {
67
78
if ( opts . basedir ) {
0 commit comments