compare-versions
Advanced tools
Comparing version 5.0.1 to 5.0.2
@@ -8,3 +8,3 @@ /** | ||
*/ | ||
export declare const compareVersions: (v1: string, v2: string) => 1 | -1 | 0; | ||
export declare const compareVersions: (v1: string, v2: string) => 0 | 1 | -1; | ||
/** | ||
@@ -27,3 +27,3 @@ * Validate [semver](https://semver.org/) version strings. | ||
*/ | ||
export declare type CompareOperator = '>' | '>=' | '=' | '<' | '<='; | ||
export type CompareOperator = '>' | '>=' | '=' | '<' | '<='; | ||
/** | ||
@@ -30,0 +30,0 @@ * Compare [semver](https://semver.org/) version strings using the specified operator. |
@@ -163,5 +163,3 @@ (function (global, factory) { | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
})); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "compare-versions", | ||
"version": "5.0.1", | ||
"version": "5.0.2", | ||
"description": "Compare semver version strings to find greater, equal or lesser.", | ||
@@ -37,6 +37,6 @@ "repository": { | ||
"devDependencies": { | ||
"@types/mocha": "^9.1.0", | ||
"@types/mocha": "^10.0.1", | ||
"c8": "^7.10.0", | ||
"mocha": "^10.0.0", | ||
"rollup": "^2.78.1", | ||
"rollup": "^3.7.4", | ||
"ts-node": "^10.7.0", | ||
@@ -43,0 +43,0 @@ "typescript": "^4.6.3" |
@@ -103,10 +103,27 @@ /** | ||
// else range of either "~" or "^" is assumed | ||
const [v1, v2, v3] = validateAndParse(version); | ||
const [r1, r2, r3] = validateAndParse(range); | ||
if (compareStrings(v1, r1) !== 0) return false; | ||
if (op === '^') { | ||
return compareSegments([v2, v3], [r2, r3]) >= 0; | ||
const [v1, v2, v3, , vp] = validateAndParse(version); | ||
const [r1, r2, r3, , rp] = validateAndParse(range); | ||
const v = [v1, v2, v3]; | ||
const r = [r1, r2 ?? 'x', 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; | ||
} | ||
if (compareStrings(v2, r2) !== 0) return false; | ||
return compareStrings(v3, r3) >= 0; | ||
// 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; | ||
}; | ||
@@ -150,4 +167,4 @@ | ||
const compareSegments = ( | ||
a: string | RegExpMatchArray, | ||
b: string | RegExpMatchArray | ||
a: string | string[] | RegExpMatchArray, | ||
b: string | string[] | RegExpMatchArray | ||
) => { | ||
@@ -154,0 +171,0 @@ for (let i = 0; i < Math.max(a.length, b.length); i++) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
40440
538