import type { MetadataRoute } from 'next'; import { fetchSitemapData } from '@/lib/api'; import { plazaPath, siteOrigin } from '@/lib/site'; export default async function sitemap(): Promise { const origin = siteOrigin(); const now = new Date(); const staticPages: MetadataRoute.Sitemap = [ { url: `${origin}${plazaPath()}`, lastModified: now, changeFrequency: 'hourly', priority: 1, }, ]; try { const data = await fetchSitemapData({ revalidate: 3600 }); const categoryPages = data.categories.map((category) => ({ url: `${origin}${plazaPath(`cat/${category.slug}`)}`, lastModified: now, changeFrequency: 'hourly' as const, priority: 0.8, })); const postPages = data.posts.map((post) => ({ url: `${origin}${plazaPath(`p/${post.id}`)}`, lastModified: new Date(post.updated_at), changeFrequency: 'weekly' as const, priority: 0.6, })); const userPages = data.users.map((user) => ({ url: `${origin}/u/${user.slug}`, lastModified: new Date(user.last_post_at), changeFrequency: 'weekly' as const, priority: 0.5, })); return [...staticPages, ...categoryPages, ...postPages, ...userPages]; } catch { return staticPages; } }