import type { MetadataRoute } from "next"; interface SitemapRoute { url: string; lastModified: string; changeFrequency?: | "always" | "hourly" | "daily" | "weekly" | "monthly" | "yearly" | "never"; priority?: number; } export default async function sitemap(): Promise { const baseUrl = "https://dki.one"; try { const response = await fetch(`${baseUrl}/api/sitemap`); if (!response.ok) { throw new Error(`Failed to fetch sitemap: ${response.statusText}`); } const sitemapData = (await response.json()) as SitemapRoute[]; return sitemapData.map((route) => { const config: Record< string, { changeFrequency: SitemapRoute["changeFrequency"]; priority: number } > = { [`${baseUrl}/`]: { changeFrequency: "weekly", priority: 1.0 }, }; if (route.url.startsWith(`${baseUrl}/projects`)) { config[route.url] = { changeFrequency: "monthly", priority: 0.8 }; } else if (route.url.startsWith(`${baseUrl}/blog`)) { config[route.url] = { changeFrequency: "weekly", priority: 0.6 }; } else { config[route.url] = { changeFrequency: "monthly", priority: 0.5 }; } return { url: route.url, lastModified: route.lastModified, ...config[route.url], }; }); } catch (error) { console.error("Failed to fetch dynamic sitemap, using fallback:", error); return [ { url: `${baseUrl}/`, lastModified: new Date().toISOString(), changeFrequency: "weekly", priority: 1.0, }, { url: `${baseUrl}/privacy-policy`, lastModified: new Date().toISOString(), changeFrequency: "yearly", priority: 0.3, }, { url: `${baseUrl}/legal-notice`, lastModified: new Date().toISOString(), changeFrequency: "yearly", priority: 0.3, }, ]; } }