You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 784B

12345678910111213141516171819202122
  1. 'use strict';
  2. const semver = require('semver');
  3. const binVersion = require('bin-version');
  4. const semverTruncate = require('semver-truncate');
  5. module.exports = (binary, semverRange, options) => {
  6. if (typeof binary !== 'string' || typeof semverRange !== 'string') {
  7. return Promise.reject(new Error('`binary` and `semverRange` arguments required'));
  8. }
  9. if (!semver.validRange(semverRange)) {
  10. return Promise.reject(new Error('Invalid version range'));
  11. }
  12. return binVersion(binary, options).then(binaryVersion => {
  13. if (!semver.satisfies(semverTruncate(binaryVersion, 'patch'), semverRange)) {
  14. const error = new Error(`${binary} ${binaryVersion} doesn't satisfy the version requirement of ${semverRange}`);
  15. error.name = 'InvalidBinaryVersion';
  16. throw error;
  17. }
  18. });
  19. };