import { Plan } from "@prisma/client"; import type { LayoutSettings } from "./layout"; import { PREMIUM_REQUIRED_CODE, type WatermarkSettings, } from "./watermark"; export class PremiumRequiredError extends Error { readonly code = PREMIUM_REQUIRED_CODE; readonly status = 403; constructor(message: string) { super(message); this.name = "PremiumRequiredError"; } } /** OSS: all watermark / typography features unlocked. */ export function assertCustomWatermarkAllowed(_plan: Plan, _settings: WatermarkSettings) { return; } /** OSS: all art-track layout features unlocked. */ export function assertArtTrackLayoutAllowed(_plan: Plan, _settings: LayoutSettings) { return; } /** OSS: per-track cover images always allowed. */ export function assertPerItemImagesAllowed( _plan: Plan, _sharedImagePath: string, _itemImagePaths: Array, ) { return; } export function premiumRequiredResponse(message: string) { return { error: message, code: PREMIUM_REQUIRED_CODE, }; }