• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict'
2module.exports = pickManifestFromRegistryMetadata
3
4var log = require('npmlog')
5var semver = require('semver')
6
7function pickManifestFromRegistryMetadata (spec, tag, versions, metadata) {
8  log.silly('pickManifestFromRegistryMetadata', 'spec', spec, 'tag', tag, 'versions', versions)
9
10  // if the tagged version satisfies, then use that.
11  var tagged = metadata['dist-tags'][tag]
12  if (tagged &&
13      metadata.versions[tagged] &&
14      semver.satisfies(tagged, spec, true)) {
15    return {resolvedTo: tag, manifest: metadata.versions[tagged]}
16  }
17  // find the max satisfying version.
18  var ms = semver.maxSatisfying(versions, spec, true)
19  if (ms) {
20    return {resolvedTo: ms, manifest: metadata.versions[ms]}
21  } else if (spec === '*' && versions.length && tagged && metadata.versions[tagged]) {
22    return {resolvedTo: tag, manifest: metadata.versions[tagged]}
23  } else {
24
25  }
26}
27