Files
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00

56 lines
1.5 KiB
TypeScript

import { isString } from '@sindresorhus/is';
import type { VersioningApi } from '../../../../modules/versioning/types.ts';
import { regEx } from '../../../../util/regex.ts';
export function getCurrentVersion(
currentValue: string,
lockedVersion: string,
versioningApi: VersioningApi,
rangeStrategy: string,
latestVersion: string,
allVersions: string[],
): string | null {
// istanbul ignore if
if (!isString(currentValue)) {
return null;
}
let useVersions = allVersions.filter((v) =>
versioningApi.matches(v, currentValue),
);
if (useVersions.length === 1) {
return useVersions[0];
}
if (latestVersion && versioningApi.matches(latestVersion, currentValue)) {
useVersions = useVersions.filter(
(v) => !versioningApi.isGreaterThan(v, latestVersion),
);
}
if (rangeStrategy === 'pin') {
return (
lockedVersion ||
versioningApi.getSatisfyingVersion(useVersions, currentValue)
);
}
if (rangeStrategy === 'bump') {
// Use the lowest version in the current range
return versioningApi.minSatisfyingVersion(useVersions, currentValue);
}
// Use the highest version in the current range
const satisfyingVersion = versioningApi.getSatisfyingVersion(
useVersions,
currentValue,
);
if (satisfyingVersion) {
return satisfyingVersion;
}
if (versioningApi.isVersion(currentValue)) {
return currentValue;
}
if (versioningApi.isSingleVersion(currentValue)) {
return currentValue.replace(regEx(/=/g), '').trim();
}
return null;
}