Twitch-VOD-Manager/src/main/domain/update-version-utils.ts
xRangerDE 640807778c refactor: relocate update-version-utils to src/main/domain/ + vitest
16 unit tests covering normalize/compare/isNewer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 21:42:05 +02:00

35 lines
1.1 KiB
TypeScript

export function normalizeUpdateVersion(version: string | null | undefined): string {
return (version || '').trim().replace(/^v/i, '');
}
function parseVersionPart(part: string): number {
const numeric = Number(part.replace(/[^0-9].*$/, ''));
return Number.isFinite(numeric) ? numeric : 0;
}
export function compareUpdateVersions(left: string | null | undefined, right: string | null | undefined): number {
const a = normalizeUpdateVersion(left);
const b = normalizeUpdateVersion(right);
if (!a && !b) return 0;
if (!a) return -1;
if (!b) return 1;
const aParts = a.split('.').map(parseVersionPart);
const bParts = b.split('.').map(parseVersionPart);
const maxLength = Math.max(aParts.length, bParts.length);
for (let i = 0; i < maxLength; i += 1) {
const av = aParts[i] || 0;
const bv = bParts[i] || 0;
if (av > bv) return 1;
if (av < bv) return -1;
}
return 0;
}
export function isNewerUpdateVersion(candidate: string | null | undefined, baseline: string | null | undefined): boolean {
return compareUpdateVersions(candidate, baseline) > 0;
}