import { listPapers } from "@/lib/papers/queries"; import { APP_URL, SITE_NAME, SITE_SECONDARY } from "@/lib/env"; export const revalidate = 600; const esc = (s: string) => s.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); export async function GET() { const { items } = await listPapers({ sort: "revised", perPage: 30 }); const xml = ` ${esc(SITE_NAME)} — ${esc(SITE_SECONDARY)}${APP_URL}Latest research working papers and revisions.en-ca ${items.map((p) => `${esc(`${p.identifier} · ${p.title}`)}${APP_URL}/papers/${p.slug}${APP_URL}/papers/${p.slug}${p.last_revised_on ? `${new Date(p.last_revised_on + "T12:00:00Z").toUTCString()}` : ""}${p.authors.map((a) => `${esc(a.display_name)}`).join("")}${esc((p.abstract[0] ?? "").slice(0, 600))}`).join("\n")} `; return new Response(xml, { headers: { "Content-Type": "application/rss+xml; charset=utf-8", "Cache-Control": "public, max-age=600" } }); }