Initial commit
This commit is contained in:
66
node_modules/compare-versions/lib/esm/satisfies.js
generated
vendored
Normal file
66
node_modules/compare-versions/lib/esm/satisfies.js
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
import { compare } from './compare.js';
|
||||
import { compareSegments, validateAndParse } from './utils.js';
|
||||
/**
|
||||
* Match [npm semver](https://docs.npmjs.com/cli/v6/using-npm/semver) version range.
|
||||
*
|
||||
* @param version Version number to match
|
||||
* @param range Range pattern for version
|
||||
* @returns `true` if the version number is within the range, `false` otherwise.
|
||||
*
|
||||
* @example
|
||||
* ```
|
||||
* satisfies('1.1.0', '^1.0.0'); // return true
|
||||
* satisfies('1.1.0', '~1.0.0'); // return false
|
||||
* ```
|
||||
*/
|
||||
export const satisfies = (version, range) => {
|
||||
// clean input
|
||||
range = range.replace(/([><=]+)\s+/g, '$1');
|
||||
// handle multiple comparators
|
||||
if (range.includes('||')) {
|
||||
return range.split('||').some((r) => satisfies(version, r));
|
||||
}
|
||||
else if (range.includes(' - ')) {
|
||||
const [a, b] = range.split(' - ', 2);
|
||||
return satisfies(version, `>=${a} <=${b}`);
|
||||
}
|
||||
else if (range.includes(' ')) {
|
||||
return range
|
||||
.trim()
|
||||
.replace(/\s{2,}/g, ' ')
|
||||
.split(' ')
|
||||
.every((r) => satisfies(version, r));
|
||||
}
|
||||
// if no range operator then "="
|
||||
const m = range.match(/^([<>=~^]+)/);
|
||||
const op = m ? m[1] : '=';
|
||||
// if gt/lt/eq then operator compare
|
||||
if (op !== '^' && op !== '~')
|
||||
return compare(version, range, op);
|
||||
// else range of either "~" or "^" is assumed
|
||||
const [v1, v2, v3, , vp] = validateAndParse(version);
|
||||
const [r1, r2, r3, , rp] = validateAndParse(range);
|
||||
const v = [v1, v2, v3];
|
||||
const r = [r1, r2 !== null && r2 !== void 0 ? r2 : 'x', r3 !== null && r3 !== void 0 ? r3 : 'x'];
|
||||
// validate pre-release
|
||||
if (rp) {
|
||||
if (!vp)
|
||||
return false;
|
||||
if (compareSegments(v, r) !== 0)
|
||||
return false;
|
||||
if (compareSegments(vp.split('.'), rp.split('.')) === -1)
|
||||
return false;
|
||||
}
|
||||
// first non-zero number
|
||||
const nonZero = r.findIndex((v) => v !== '0') + 1;
|
||||
// pointer to where segments can be >=
|
||||
const i = op === '~' ? 2 : nonZero > 1 ? nonZero : 1;
|
||||
// before pointer must be equal
|
||||
if (compareSegments(v.slice(0, i), r.slice(0, i)) !== 0)
|
||||
return false;
|
||||
// after pointer must be >=
|
||||
if (compareSegments(v.slice(i), r.slice(i)) === -1)
|
||||
return false;
|
||||
return true;
|
||||
};
|
||||
//# sourceMappingURL=satisfies.js.map
|
||||
Reference in New Issue
Block a user