diff options
Diffstat (limited to 'deps/npm/lib/install/realize-shrinkwrap-specifier.js')
-rw-r--r-- | deps/npm/lib/install/realize-shrinkwrap-specifier.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/deps/npm/lib/install/realize-shrinkwrap-specifier.js b/deps/npm/lib/install/realize-shrinkwrap-specifier.js new file mode 100644 index 0000000000..0c491a6028 --- /dev/null +++ b/deps/npm/lib/install/realize-shrinkwrap-specifier.js @@ -0,0 +1,25 @@ +'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) + } +} |