41 lines
1.2 KiB
JavaScript
41 lines
1.2 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() {
|
||
|
await migrateCollection(game.actors, migrateActor);
|
||
|
await migrateCollection(game.scenes, migrateScene);
|
||
|
await migrateCompendiums(migrateCompendium);
|
||
|
}
|
||
|
|
||
|
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,
|
||
|
};
|