Files
Sergei Zharinov 9b8dfd6259 feat(versioning): Add Paket versioning (#44366)
* feat(versioning): add paket versioning

* docs(versioning): use JSDoc for paket function comments
2026-07-07 10:28:20 +00:00

28 lines
939 B
TypeScript

import type { NugetVersion } from '../nuget/types.ts';
import { compare as compareNuget } from '../nuget/version.ts';
export function sameReleaseParts(x: NugetVersion, y: NugetVersion): boolean {
return (
x.major === y.major &&
(x.minor ?? 0) === (y.minor ?? 0) &&
(x.patch ?? 0) === (y.patch ?? 0) &&
(x.revision ?? 0) === (y.revision ?? 0)
);
}
/**
* NuGet ordering, plus the Paket rule that the literal `prerelease` suffix
* sorts below any other prerelease of the same release version, so that
* `1.2.3-prerelease` acts as an "any prerelease of 1.2.3" floor.
*/
export function compare(x: NugetVersion, y: NugetVersion): number {
if (x.prerelease && y.prerelease && sameReleaseParts(x, y)) {
const xSentinel = x.prerelease === 'prerelease';
const ySentinel = y.prerelease === 'prerelease';
if (xSentinel !== ySentinel) {
return xSentinel ? -1 : 1;
}
}
return compareNuget(x, y);
}