Files
cfw-autumn/shared/api/versionUtils/versionChangeUtils/versionChangeRegistry.ts
John Yeo fb2f3bbd71 wip
2025-10-25 12:50:56 +01:00

62 lines
2.0 KiB
TypeScript

// Import customer feature changes
// Import check changes
import { V0_2_CheckChange } from "@api/balances/check/changes/V0.2_CheckChange.js";
import { V0_1_CustomerChange } from "@api/customers/changes/V0_1_CustomerChange.js";
// Import customer changes
import { V0_2_CustomerChange } from "@api/customers/changes/V0_2_CustomerChange.js";
import { V0_2_InvoicesAlwaysExpanded } from "@api/customers/changes/V0_2_InvoicesAlwaysExpanded.js";
// Import customer product changes
import { ApiVersion } from "../ApiVersion.js";
import type { VersionChangeConstructor } from "./VersionChange.js";
import { VersionChangeRegistryClass } from "./VersionChangeRegistryClass.js";
export const V1_4_CHANGES: VersionChangeConstructor[] = [
// Add beta changes here when needed
];
export const V1_2_CHANGES: VersionChangeConstructor[] = [
// V1_1_FeaturesArrayToObject, // Transforms TO V1_1
];
export const V1_1_CHANGES: VersionChangeConstructor[] = [
V0_2_CustomerChange, // Transforms TO V0_2: splits structure + transforms features
V0_2_InvoicesAlwaysExpanded, // Side effect: invoices always expanded for V0_2 and older
V0_2_CheckChange, // Transforms TO V0_2: check response to balances array format
];
export const V0_2_CHANGES: VersionChangeConstructor[] = [
V0_1_CustomerChange, // Transforms TO V0_1: removes next_reset_at, allowance, usage_limit
];
export const V0_1_CHANGES: VersionChangeConstructor[] = [];
export function registerAllVersionChanges() {
VersionChangeRegistryClass.register({
version: ApiVersion.Beta,
changes: V1_4_CHANGES,
});
VersionChangeRegistryClass.register({
version: ApiVersion.V1_2,
changes: V1_2_CHANGES,
});
VersionChangeRegistryClass.register({
version: ApiVersion.V1_1,
changes: V1_1_CHANGES,
});
VersionChangeRegistryClass.register({
version: ApiVersion.V0_2,
changes: V0_2_CHANGES,
});
VersionChangeRegistryClass.register({
version: ApiVersion.V0_1,
changes: V0_1_CHANGES,
});
}
// Auto-register on import
registerAllVersionChanges();
export { V0_2_InvoicesAlwaysExpanded };