@@ -69,27 +69,29 @@ module.exports = function resolve (x, opts, cb) {
69
69
if ( exts . length === 0 ) return cb ( null , undefined , pkg ) ;
70
70
var file = x + exts [ 0 ] ;
71
71
72
- isFile ( file , function ( err , ex ) {
72
+ if ( pkg ) onpkg ( null , pkg )
73
+ else loadpkg ( path . dirname ( file ) , onpkg ) ;
74
+
75
+ function onpkg ( err , pkg_ , dir ) {
76
+ pkg = pkg_ ;
73
77
if ( err ) return cb ( err )
74
- if ( ! ex ) return load ( exts . slice ( 1 ) , x , pkg )
75
- if ( pkg ) return cb ( null , file , pkg )
76
-
77
- loadpkg ( path . dirname ( file ) , function ( err , pkg , dir ) {
78
- if ( err ) return cb ( err )
79
- if ( pkg && opts . pathFilter ) {
80
- var rel = path . relative ( dir , file )
81
- . slice ( 0 , - exts [ 0 ] . length )
82
- ;
83
- var r = opts . pathFilter ( pkg , x , rel ) ;
84
- if ( r ) return load (
85
- extensions . slice ( ) ,
86
- path . resolve ( dir , r ) ,
87
- pkg
88
- ) ;
89
- }
90
- cb ( null , file , pkg )
91
- } ) ;
92
- } ) ;
78
+ if ( dir && pkg && opts . pathFilter ) {
79
+ var rfile = path . relative ( dir , file ) ;
80
+ var rel = rfile . slice ( 0 , rfile . length - exts [ 0 ] . length ) ;
81
+ var r = opts . pathFilter ( pkg , x , rel ) ;
82
+ if ( r ) return load (
83
+ [ '' ] . concat ( extensions . slice ( ) ) ,
84
+ path . resolve ( dir , r ) ,
85
+ pkg
86
+ ) ;
87
+ }
88
+ isFile ( file , onex ) ;
89
+ }
90
+ function onex ( err , ex ) {
91
+ if ( err ) cb ( err )
92
+ else if ( ! ex ) load ( exts . slice ( 1 ) , x , pkg )
93
+ else cb ( null , file , pkg )
94
+ }
93
95
}
94
96
}
95
97
0 commit comments