Files
healer-man/scripts/dungeon-pipeline/availability.mjs
T
2026-08-14 15:56:39 -04:00

24 lines
752 B
JavaScript

export function mergeCampaignAvailability(existingAvailability, campaignIds) {
const existingEnabled =
existingAvailability?.enabled &&
typeof existingAvailability.enabled === "object" &&
!Array.isArray(existingAvailability.enabled)
? existingAvailability.enabled
: {};
const normalizedCampaignIds = [
...new Set(campaignIds.filter((id) => typeof id === "string" && id.length > 0)),
];
const campaignIdSet = new Set(normalizedCampaignIds);
const preservedEntries = Object.entries(existingEnabled).filter(
([id]) => !campaignIdSet.has(id),
);
return {
schemaVersion: 1,
enabled: Object.fromEntries([
...preservedEntries,
...normalizedCampaignIds.map((id) => [id, true]),
]),
};
}