@@ -128,6 +128,7 @@ var getSaveType = require('./install/save.js').getSaveType
128
128
var doSerialActions = require ( './install/actions.js' ) . doSerial
129
129
var doParallelActions = require ( './install/actions.js' ) . doParallel
130
130
var doOneAction = require ( './install/actions.js' ) . doOne
131
+ var parseJSON = require ( './utils/parse-json.js' )
131
132
132
133
function unlockCB ( lockPath , name , cb ) {
133
134
validate ( 'SSF' , arguments )
@@ -396,21 +397,13 @@ Installer.prototype.computeLinked = function (cb) {
396
397
} )
397
398
}
398
399
399
- function safeJSONparse ( data ) {
400
- try {
401
- return JSON . parse ( data )
402
- } catch ( ex ) {
403
- return
404
- }
405
- }
406
-
407
400
function isLinkable ( pkg , cb ) {
408
401
var globalPackage = path . resolve ( npm . globalPrefix , 'lib' , 'node_modules' , pkg . package . name )
409
402
var globalPackageJson = path . resolve ( globalPackage , 'package.json' )
410
403
fs . stat ( globalPackage , function ( er ) {
411
404
if ( er ) return cb ( true , true )
412
405
fs . readFile ( globalPackageJson , function ( er , data ) {
413
- var json = safeJSONparse ( data )
406
+ var json = parseJSON . noExceptions ( data )
414
407
cb ( false , json && json . version === pkg . package . version )
415
408
} )
416
409
} )
@@ -520,10 +513,10 @@ Installer.prototype.readLocalPackageData = function (cb) {
520
513
}
521
514
if ( ! currentTree . package ) currentTree . package = { }
522
515
if ( currentTree . package . _shrinkwrap ) return cb ( )
523
- fs . readFile ( path . join ( self . where , 'npm-shrinkwrap.json' ) , { encoding : 'utf8' } , function ( er , data ) {
516
+ fs . readFile ( path . join ( self . where , 'npm-shrinkwrap.json' ) , function ( er , data ) {
524
517
if ( er ) return cb ( )
525
518
try {
526
- currentTree . package . _shrinkwrap = JSON . parse ( data )
519
+ currentTree . package . _shrinkwrap = parseJSON ( data )
527
520
} catch ( ex ) {
528
521
return cb ( ex )
529
522
}
0 commit comments