/* eslint-disable */ /** * This file was automatically generated by scripts/manifest/migrate-ts.mustache. * DO NOT MODIFY IT BY HAND. Instead, modify scripts/manifest/migrate-ts.mustache, * and run node ./scripts/manifest/generateFormatTypes.js to regenerate this file. */ import { AnyAppManifest, AppManifest, AppManifestFormats, } from "."; import { findShortestMigrationPath } from "../../migrations"; import { migrators } from "./migrators"; import { ILogger } from "@polywrap/logging-js"; export function migrateAppManifest( manifest: AnyAppManifest, to: AppManifestFormats, logger?: ILogger ): AppManifest { let from = manifest.format as AppManifestFormats; if (!(Object.values(AppManifestFormats).some(x => x === from))) { throw new Error(`Unrecognized AppManifestFormat "${manifest.format}"`); } if (!(Object.values(AppManifestFormats).some(x => x === to))) { throw new Error(`Unrecognized AppManifestFormat "${to}"`); } const migrationPath = findShortestMigrationPath(migrators, from, to); if (!migrationPath) { throw new Error( `Migration path from AppManifestFormat "${from}" to "${to}" is not available` ); } let newManifest = manifest; for(const migrator of migrationPath){ newManifest = migrator.migrate(newManifest, logger) as AnyAppManifest; } return newManifest as AppManifest; }