import { join } from "node:path" import type { Manual } from "@/lib/manuals-types" type ThumbnailSanitizeOptions = { isLocalDevelopment: boolean thumbnailsRoot: string fileExists?: (path: string) => boolean } export function sanitizeManualThumbnailsForRuntime( manuals: Manual[], options: ThumbnailSanitizeOptions ): Manual[] { if (!options.isLocalDevelopment) { return manuals } const fileExists = options.fileExists ?? (() => false) return manuals.map((manual) => { if (!manual.thumbnailUrl || /^https?:\/\//i.test(manual.thumbnailUrl)) { return manual } const relativeThumbnailPath = manual.thumbnailUrl.includes("/thumbnails/") ? manual.thumbnailUrl.replace(/^.*\/thumbnails\//, "") : manual.thumbnailUrl return fileExists(join(options.thumbnailsRoot, relativeThumbnailPath)) ? manual : { ...manual, thumbnailUrl: undefined } }) }