@@ -42,6 +42,20 @@ var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) {
42
42
}
43
43
} ;
44
44
45
+ var defaultReadPkg = function defaultReadPkg ( readFile , pkgfile , cb ) {
46
+ readFile ( pkgfile , function ( readFileErr , body ) {
47
+ if ( readFileErr ) cb ( readFileErr ) ;
48
+ else {
49
+ try {
50
+ var pkg = JSON . parse ( body ) ;
51
+ cb ( null , pkg ) ;
52
+ } catch ( jsonErr ) {
53
+ cb ( null ) ;
54
+ }
55
+ }
56
+ } ) ;
57
+ } ;
58
+
45
59
var getPackageCandidates = function getPackageCandidates ( x , start , opts ) {
46
60
var dirs = nodeModulesPaths ( start , opts , x ) ;
47
61
for ( var i = 0 ; i < dirs . length ; i ++ ) {
@@ -70,6 +84,7 @@ module.exports = function resolve(x, options, callback) {
70
84
var isDirectory = opts . isDirectory || defaultIsDir ;
71
85
var readFile = opts . readFile || fs . readFile ;
72
86
var realpath = opts . realpath || defaultRealpath ;
87
+ var readPkg = opts . readPkg || defaultReadPkg ;
73
88
var packageIterator = opts . packageIterator ;
74
89
75
90
var extensions = opts . extensions || [ '.js' ] ;
@@ -211,9 +226,10 @@ module.exports = function resolve(x, options, callback) {
211
226
// on err, ex is false
212
227
if ( ! ex ) return loadpkg ( path . dirname ( dir ) , cb ) ;
213
228
214
- readFile ( pkgfile , function ( err , body ) {
229
+ readPkg ( readFile , pkgfile , function ( err , pkgParam ) {
215
230
if ( err ) cb ( err ) ;
216
- try { var pkg = JSON . parse ( body ) ; } catch ( jsonErr ) { }
231
+
232
+ var pkg = pkgParam ;
217
233
218
234
if ( pkg && opts . packageFilter ) {
219
235
pkg = opts . packageFilter ( pkg , pkgfile , dir ) ;
@@ -239,11 +255,10 @@ module.exports = function resolve(x, options, callback) {
239
255
if ( err ) return cb ( err ) ;
240
256
if ( ! ex ) return loadAsFile ( path . join ( x , 'index' ) , fpkg , cb ) ;
241
257
242
- readFile ( pkgfile , function ( err , body ) {
258
+ readPkg ( readFile , pkgfile , function ( err , pkgParam ) {
243
259
if ( err ) return cb ( err ) ;
244
- try {
245
- var pkg = JSON . parse ( body ) ;
246
- } catch ( jsonErr ) { }
260
+
261
+ var pkg = pkgParam ;
247
262
248
263
if ( pkg && opts . packageFilter ) {
249
264
pkg = opts . packageFilter ( pkg , pkgfile , pkgdir ) ;
0 commit comments