import type { MetadataRoute } from "next"; import { getAllBlogPosts } from "./content"; import { sitemapUrl } from "./siteMetadata"; import { USE_CASE_DETAIL_SLUGS } from "./useCaseSyntheticPost"; const STATIC_PUBLIC_PATHS = [ "/", "/about", "/learn", "/templates", "/blog", "/use-cases", "/how-it-works", "/privacy", "/terms", "/cookies", ] as const; /** * Public marketing URLs for `/sitemap.xml`. Omits signed-in product routes * (`/create`, `/login`, `/profile`), admin, and `/rules/[id]` (those ids are * not known without the database). */ export function buildPublicSitemap(): MetadataRoute.Sitemap { const entries: MetadataRoute.Sitemap = STATIC_PUBLIC_PATHS.map((path) => ({ url: sitemapUrl(path), })); for (const post of getAllBlogPosts()) { entries.push({ url: sitemapUrl(`/blog/${post.slug}`), lastModified: post.lastModified, }); } for (const slug of USE_CASE_DETAIL_SLUGS) { entries.push({ url: sitemapUrl(`/use-cases/${slug}`) }); entries.push({ url: sitemapUrl(`/use-cases/${slug}/rule`) }); } return entries; }