Skip to content

Resolve a set of semver constraints with the fewest versions possible.

Notifications You must be signed in to change notification settings

segment-boneyard/resolve-semver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

resolve-semver

Resolve a set of semver constraints with the fewest versions possible.

Given a set of semvers strings and a set of available versions, map each semver string to an available version in the set so that the fewest number of available versions are actually used.

Installation

$ npm install resolve-semver

API

resolve(ranges, versions)

Returns a map with semvers as keys, and the specific version as value.

var versions = [
  '1.1.1',
  '1.5.6',
  '1.5.8',
  '1.9.7'
];

var semvers = [
  '',
  '*',
  'x',
  '1',
  '1.x',
  '1.*',
  '~1',
  '^1',
  '1.5',
  '1.5.*',
  '1.5.x',
  '~1.5',
  '^1.4',
  '<1.5.9',
  '<=1.5.6',
  '>1.4.0',
  '>=1.5.6',
  '~1.5.5',
  '^1.0.0',
  '1.5.6'
];

assert.deepEqual(resolve(semvers, versions), {
  '': '1.5.6',
  '*': '1.5.6',
  'x': '1.5.6',
  '1': '1.5.6',
  '1.x': '1.5.6',
  '1.*': '1.5.6',
  '~1': '1.5.6',
  '^1': '1.5.6',
  '1.5': '1.5.6',
  '1.5.*': '1.5.6',
  '1.5.x': '1.5.6',
  '~1.5': '1.5.6',
  '^1.4': '1.5.6',
  '<1.5.9': '1.5.6',
  '<=1.5.6': '1.5.6',
  '>1.4.0': '1.5.6',
  '>=1.5.6': '1.5.6',
  '~1.5.5': '1.5.6',
  '^1.0.0': '1.5.6',
  '1.5.6': '1.5.6'
});

This is the semvers' order of priority:

1.2.3
>1.2.3
<1.2.3
>=1.2.3
<=1.2.3
~1.2.3
^1.2.3
1.2.x
1.x.x
x.x.x

License

MIT

About

Resolve a set of semver constraints with the fewest versions possible.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published