22 lines
892 B
JavaScript
22 lines
892 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.sortImageVersionsIfSemantic = void 0;
|
|
const SEMVER_PATTERN = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
const semverSortKey = (value) => value.split(".").map((part) => Number.parseInt(part, 10));
|
|
const sortImageVersionsIfSemantic = (versions) => {
|
|
if (!versions.every((value) => SEMVER_PATTERN.test(value))) {
|
|
return [...versions].sort((a, b) => a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }));
|
|
}
|
|
return [...versions].sort((a, b) => {
|
|
const aParts = semverSortKey(a);
|
|
const bParts = semverSortKey(b);
|
|
for (let i = 0; i < aParts.length; i += 1) {
|
|
if (aParts[i] !== bParts[i]) {
|
|
return aParts[i] - bParts[i];
|
|
}
|
|
}
|
|
return 0;
|
|
});
|
|
};
|
|
exports.sortImageVersionsIfSemantic = sortImageVersionsIfSemantic;
|