const MEDIA_PROXY_PATH = "/api/media/proxy"; function configuredMinioPublicUrl(): string { return ( process.env.NEXT_PUBLIC_MINIO_PUBLIC_URL || process.env.MINIO_PUBLIC_URL || "" ).replace(/\/$/, ""); } export function isExternalMediaUrl(value: string): boolean { return /^https?:\/\//i.test(value); } export function isMinioUrl(value: string): boolean { const publicUrl = configuredMinioPublicUrl(); return Boolean(publicUrl && value.startsWith(`${publicUrl}/`)); } export function mediaUrl(value?: string | null): string { const url = String(value || "").trim(); if (!url) return ""; if (/^(data:|blob:|#|mailto:|tel:)/i.test(url)) return url; if (/^file:/i.test(url)) return ""; if (!isExternalMediaUrl(url)) return url; if (isMinioUrl(url)) return url; return `${MEDIA_PROXY_PATH}?src=${encodeURIComponent(url)}`; } export function mediaUrls(values: string[]): string[] { return values.map(mediaUrl).filter(Boolean); }