semver-select

1.1.0 • Public • Published

semver-select.js

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.

Usage

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' }

Tests

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

Changelog

See changelog.md

Issues

If you discover a bug, please raise an issue on Github. https://github.com/overlookmotel/semver-select/issues

Contribution

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

Package Sidebar

Install

npm i semver-select

Weekly Downloads

4,318

Version

1.1.0

License

none

Last publish

Collaborators

  • overlookmotel