Files
cfw-autumn/shared/api/versionUtils/versionRegistry.ts
2026-05-13 14:20:37 +01:00

72 lines
2.0 KiB
TypeScript

import { ApiVersion } from "./ApiVersion.js";
export interface VersionMetadata {
semver: ApiVersion;
calver: string;
releasedAt: number;
description: string;
deprecated?: boolean;
migrateToVersion?: ApiVersion;
}
/**
* Version Registry (descending order - newest first)
* SemVer ↔ CalVer mappings and metadata
*/
export const VERSION_REGISTRY: Record<ApiVersion, VersionMetadata> = {
[ApiVersion.V2_3]: {
semver: ApiVersion.V2_3,
calver: "2026-05-13",
releasedAt: new Date("2026-05-13").getTime(),
description: "Cursor pagination on list endpoints",
},
[ApiVersion.V2_2]: {
semver: ApiVersion.V2_2,
calver: "2026-03-18",
releasedAt: new Date("2026-03-18").getTime(),
description: "Customer eligibility with attach_action and status",
},
[ApiVersion.V2_1]: {
semver: ApiVersion.V2_1,
calver: "2026-03-17",
releasedAt: new Date("2026-03-17").getTime(),
description: "Plan items with max_purchase",
},
[ApiVersion.V2_0]: {
semver: ApiVersion.V2_0,
calver: "2026-03-16",
releasedAt: new Date("2026-03-16").getTime(),
description: "Plan features with max_purchase",
},
[ApiVersion.V1_Beta]: {
semver: ApiVersion.V1_Beta,
calver: "beta",
releasedAt: new Date("2025-06-01").getTime(),
description: "Beta version with experimental features",
},
[ApiVersion.V1_2]: {
semver: ApiVersion.V1_2,
calver: "2025-05-05",
releasedAt: new Date("2025-05-05").getTime(),
description: "Features as object (keyed by feature_id)",
},
[ApiVersion.V1_1]: {
semver: ApiVersion.V1_1,
calver: "2025-04-17",
releasedAt: new Date("2025-04-17").getTime(),
description: "Merged customer response, features as array",
},
[ApiVersion.V0_2]: {
semver: ApiVersion.V0_2,
calver: "2025-04-01",
releasedAt: new Date("2025-04-01").getTime(),
description: "Customer products with items field",
},
[ApiVersion.V0_1]: {
semver: ApiVersion.V0_1,
calver: "2025-02-01",
releasedAt: new Date("2025-02-01").getTime(),
description: "Original customer schema",
},
};