node/deps/npm/lib/install/realize-shrinkwrap-specifier.js
Kat Marchán d44a9eb11b deps: upgrade npm to 3.10.8
PR-URL: https://github.com/nodejs/node/pull/8706
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
2016-09-27 16:39:27 -04:00

26 lines
661 B
JavaScript

'use strict'
var realizePackageSpecifier = require('realize-package-specifier')
var isRegistrySpecifier = require('./is-registry-specifier.js')
module.exports = function (name, sw, where, cb) {
function lookup (ver, cb) {
realizePackageSpecifier(name + '@' + ver, where, cb)
}
if (sw.resolved) {
return lookup(sw.resolved, cb)
} else if (sw.from) {
return lookup(sw.from, function (err, spec) {
if (err || isRegistrySpecifier(spec)) {
return thenUseVersion()
} else {
return cb(null, spec)
}
})
} else {
return thenUseVersion()
}
function thenUseVersion () {
lookup(sw.version, cb)
}
}