import { logger } from '../../../logger/index.ts'; import { api as semverCoerced } from '../semver-coerced/index.ts'; import type { VersioningApi } from '../types.ts'; export const id = 'same-major'; export const displayName = 'Same Major Versioning'; export const urls = []; export const supportsRanges = false; /** * * Converts input to range if it's a version. eg. X.Y.Z -> '>=X.Y.Z =${input} <${major + 1}`; } // for same major versioning one version is greater than the other if its major is greater function isGreaterThan(version: string, other: string): boolean { const versionMajor = semverCoerced.getMajor(version)!; const otherMajor = semverCoerced.getMajor(other)!; if (!versionMajor || !otherMajor) { return false; } return versionMajor > otherMajor; } function matches(version: string, range: string): boolean { return semverCoerced.matches(version, massageVersion(range)); } function getSatisfyingVersion( versions: string[], range: string, ): string | null { return semverCoerced.getSatisfyingVersion(versions, massageVersion(range)); } function minSatisfyingVersion( versions: string[], range: string, ): string | null { return semverCoerced.minSatisfyingVersion(versions, massageVersion(range)); } function isLessThanRange(version: string, range: string): boolean { return semverCoerced.isLessThanRange!(version, massageVersion(range)); } export const api: VersioningApi = { ...semverCoerced, matches, getSatisfyingVersion, minSatisfyingVersion, isLessThanRange, isGreaterThan, }; export default api;