import versionings from './api.ts'; import { Versioning } from './schema.ts'; import * as semverCoerced from './semver-coerced/index.ts'; import type { VersioningApi, VersioningApiConstructor } from './types.ts'; export * from './types.ts'; export const defaultVersioning = semverCoerced; export function getVersioningList(): string[] { return Array.from(versionings.keys()); } /** * Get versioning map. Can be used to dynamically add new versioning type */ export function getVersionings(): Map< string, VersioningApi | VersioningApiConstructor > { return versionings; } export function get(versioning: string | null | undefined): VersioningApi { const res = Versioning.safeParse(versioning ?? defaultVersioning.id); if (!res.success) { const [issue] = res.error.issues; // oxlint-disable-next-line typescript/prefer-optional-chain if (issue && issue.code === 'custom' && issue.params?.error) { throw issue.params.error; } // istanbul ignore next: should never happen throw res.error; } return res.data; }