export function compareVersions()

in src/Utils/VersionHelper.ts [37:69]


export function compareVersions(a: string, b: string): number {
    let result: number;

    // Legacy: "major.minor.patch.qualifier"
    // SemVer: "major.minor.patch-qualifier"
    const versionA: string[] = a.split(/\.|-/g);
    const versionB: string[] = b.split(/\.|-/g);

    // workaround for qualifier "BUILD-SNAPSHOT" in v2.1
    if (versionA.length === 5) {
        versionA[3] = `${versionA[3]}-${versionA[4]}`;
    }
    if (versionB.length === 5) {
        versionB[3] = `${versionB[3]}-${versionB[4]}`;
    }

    for (let i: number = 0; i < 3; i += 1) {
        result = parseInt(versionA[i], 10) - parseInt(versionB[i], 10);
        if (result !== 0) {
            return result;
        }
    }
    // version[3] can be undefined
    const aqualRaw: string = versionA[3] || "RELEASE";
    const bqualRaw: string = versionB[3] || "RELEASE";
    const aqual: string = parseQualifier(aqualRaw);
    const bqual: string = parseQualifier(bqualRaw);
    result = qualifiers.indexOf(aqual) - qualifiers.indexOf(bqual);
    if (result !== 0) {
        return result;
    }
    return aqualRaw.localeCompare(bqualRaw);
}