Select an attribute of an object based on semver versioning

Downloads in past


121.1.09 years ago9 years agoMinified + gzip package size for semver-select in KB


Select an attribute of an object based on semver versioning

Current status

NPM version Build Status Dependency Status Dev dependency Status Coverage Status
API is stable. All features tested and working.

What's it for

A few useful tools for when you need to select a function or other variable based on a semver version.
For example, if you are writing an app which interacts with an API which needs a different calling signature depending on it's version, you can use this to choose a function that implements the right interface for that API version.


semverSelect(version, choices)

Takes a list of choices as an object with semver match strings as the object's attributes.
Loops through choice's attributes and returns the first matching result. Returns undefined if no match found.
var semverSelect = require('semver-select');

var fns = {
    '^1.0.0': function(in) { return 'v1' },
    '^2.0.0': function(in) { return 'v2' },
    '*': function(in) { return 'other' }

semverSelect('1.0.2', fns)(); // returns 'v1'
semverSelect('2.3.8', fns)(); // returns 'v2'
semverSelect('4.0.0', fns)(); // returns 'other'

semverSelect.object(version, choicesObject)

Takes an object and maps the values of attributes to the semver-chosen choice.
semverSelect('2.3.8', {
	monkey: {
		'^1.0.0': 'v1',
        '1.0.0 - 2.x.x': 'v2',
        '*': 'other'
	dinosaur: {
		'^1.0.0': 'ver1',
		'^2.0.0': 'ver2'
}); // returns { monkey: 'v2', dinosaur: 'ver2' }


Use npm test to run the tests. Use npm run cover to check coverage.




If you discover a bug, please raise an issue on Github.


Pull requests are very welcome. Please:
  • ensure all tests pass before submitting PR
  • add an entry to changelog
  • add tests for new features
  • document new functionality/API additions in README