ds4/src/migration/009.js
Johannes Loher 7670d7f808
All checks were successful
ci/woodpecker/pr/checks Pipeline was successful
ci/woodpecker/push/checks Pipeline was successful
chore: reformat with 2 spaces
2023-07-10 22:33:01 +02:00

41 lines
1.3 KiB
JavaScript

// SPDX-FileCopyrightText: 2023 Johannes Loher
//
// SPDX-License-Identifier: MIT
import {
getSceneMigrator,
migrateCollection,
migrateCompendiums,
getCompendiumMigrator,
getActorMigrator,
} from "./migrationHelpers.js";
/** @type {import("./migration.js").Migration["migrate"]} */
async function migrate() {
const actorsResult = await migrateCollection(game.actors, migrateActor);
const scenesResult = await migrateCollection(game.scenes, migrateScene);
const compendiumsResult = await migrateCompendiums(migrateCompendium);
return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success";
}
const itemIdRegex = /Item\.([a-zA-Z0-9]+)/;
/** @type {import('./migrationHelpers.js').Migrator<ActiveEffect>} */
async function migrateActiveEffect(activeEffect) {
if (activeEffect.parent instanceof Actor) {
const itemId = activeEffect.origin?.match(itemIdRegex)?.[1];
if (activeEffect.parent.items.has(itemId)) {
await activeEffect.delete();
}
}
}
const migrateActor = getActorMigrator(undefined, migrateActiveEffect);
const migrateScene = getSceneMigrator(migrateActor);
const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene });
/** @type {import("./migration.js").Migration} */
export const migration = {
migrate,
migrateCompendium,
};