import { Addon, AddonRequest, AddonResponse } from "@mediahubmx/schema"; import semver from "semver"; import { AddonClass } from "./addon"; import { ActionHandlerContext } from "./types"; const sdkVersion: string = require("../package.json").version; export type MigrationContext = { clientVersion: null | string; addon: AddonClass; data: any; user: ActionHandlerContext["user"]; validator: { request: (obj: any) => any; response: (obj: any) => any; }; }; const stripPersonDirectory = (persons?: any[]) => { if (!Array.isArray(persons)) return; for (const person of persons) { if (person && typeof person === "object") { delete person.directory; } } }; export const migrations = { item: { response(ctx: MigrationContext, input: any, output: any) { if (ctx.clientVersion && semver.lt(ctx.clientVersion, "3.1.0")) { stripPersonDirectory(output.cast); stripPersonDirectory(output.director); stripPersonDirectory(output.writer); } return output; }, }, addon: { response( ctx: MigrationContext, input: AddonRequest, output: AddonResponse ) { const addon = output; const any = addon; if (any.type !== "server") { any.sdkVersion = sdkVersion; } if (ctx.clientVersion && semver.lt(ctx.clientVersion, "1.2.12")) { if (addon.catalogs) { for (const catalog of addon.catalogs) { switch (catalog.kind ?? "vod") { case "iptv": catalog.itemTypes = ["iptv"]; break; case "vod": catalog.itemTypes = ["movie", "series", "channel"]; break; } delete catalog.kind; } } } return addon; }, }, };