import { promises as fs } from "fs"; import path from "path"; const ROOT = path.resolve("public", "media", "onboarding"); const MANIFEST = path.join(ROOT, "manifest.json"); const EXTENSIONS = new Set([".png", ".jpg", ".jpeg", ".webp"]); async function walk(dir, base = "") { const entries = await fs.readdir(dir, { withFileTypes: true }); const files = []; for (const entry of entries) { const full = path.join(dir, entry.name); const rel = path.join(base, entry.name); if (entry.isDirectory()) { files.push(...(await walk(full, rel))); } else if (EXTENSIONS.has(path.extname(entry.name).toLowerCase())) { files.push(rel.replace(/\\/g, "/")); } } return files; } async function ensureDir(dir) { await fs.mkdir(dir, { recursive: true }); } async function main() { try { await ensureDir(ROOT); const files = await walk(ROOT).catch(() => []); const payload = { generated_at: new Date().toISOString(), files: files.sort(), }; await fs.writeFile(MANIFEST, JSON.stringify(payload, null, 2)); } catch (err) { console.error("Failed to build onboarding media manifest", err); process.exitCode = 1; } } await main();