summaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/lib/install/realize-shrinkwrap-specifier.js
blob: e4b14b1f0d9597d699b2788defba9cf75690315f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'use strict'
var npa = require('npm-package-arg')
const isRegistry = require('../utils/is-registry.js')

module.exports = function (name, sw, where) {
  try {
    if (sw.version && sw.integrity) {
      return npa.resolve(name, sw.version, where)
    } else if (sw.from) {
      const spec = npa(sw.from, where)
      if (isRegistry(spec) && sw.version) {
        return npa.resolve(name, sw.version, where)
      } else if (!sw.resolved) {
        return spec
      }
    }
    if (sw.resolved) {
      return npa.resolve(name, sw.resolved, where)
    }
  } catch (_) { }
  return npa.resolve(name, sw.version, where)
}