diff --git a/package.json b/package.json index 5460edc..13a510c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.26.22", + "version": "0.26.23", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/misc.ts b/src/misc.ts index 648ad59..f1da0ab 100644 --- a/src/misc.ts +++ b/src/misc.ts @@ -1,9 +1,21 @@ import {PathEvent} from './path-events.ts'; import {md5} from './string'; +/** + * Compare version numbers + * @param {string} target + * @param {string} vs + * @return {number} -1 = target is lower, 0 = equal, 1 = higher + */ +export function compareVersions(target: string, vs: string): -1 | 0 | 1 { + const [tMajor, tMinor, tPatch] = target.split('.').map(v => +v.replace(/[^0-9]/g, '')); + const [vMajor, vMinor, vPatch] = vs.split('.').map(v => +v.replace(/[^0-9]/g, '')); + return (tMajor > vMajor || tMinor > vMinor || tPatch > vPatch) ? 1 : + (tMajor < vMajor || tMinor < vMinor || tPatch < vPatch) ? -1 : 0; +} + /** * Escape any regex special characters to avoid misinterpretation during search - * * @param {string} value String which should be escaped * @return {string} New escaped sequence */