Files
cfw-autumn/shared/api/versionUtils/orgVersionUtils.ts
2025-10-06 10:03:12 +01:00

42 lines
1.0 KiB
TypeScript

import type { Organization } from "@models/orgModels/orgTable.js";
import { ApiVersionClass } from "./ApiVersionClass.js";
import { legacyToSemVer, semVerToLegacy } from "./convertVersionUtils.js";
/**
* DEPRECATED: Use ctx.apiVersion directly
* Middleware handles version resolution automatically
*/
export function getOrgApiVersion({
org,
reqApiVersion,
}: {
org: Organization;
reqApiVersion?: ApiVersionClass;
}): ApiVersionClass {
if (reqApiVersion) {
return reqApiVersion;
}
const legacyVersion = org.api_version || org.config?.api_version || 1.0;
const semver = legacyToSemVer({ legacyVersion });
if (!semver) {
throw new Error(`Invalid version for org: ${legacyVersion}`);
}
return new ApiVersionClass(semver);
}
/**
* Convert ApiVersionClass → legacy float
* @example toLegacyVersion({ apiVersion: ctx.apiVersion }) // 1.1
*/
export function toLegacyVersion({
apiVersion,
}: {
apiVersion: ApiVersionClass;
}): number {
const legacy = semVerToLegacy({ semver: apiVersion.value });
return legacy || 1.0;
}