import type { Context } from "koa"; import { Page } from "@sealcode/sealgen"; export const actionName = "Sitemap"; async function generateSitemap(ctx: Context) { const pages = await ctx.$app.collections.pages.list(ctx.$context).fetch(); let xml = `\n`; xml += `\n`; for (const page of pages.items) { xml += ` \n ${ctx.origin.replace(/\/$/, "")}${page.get("url")}\n \n`; } xml += `\n`; return xml; } export default new (class SitemapPage extends Page { async canAccess() { return { canAccess: true, message: "" }; } async render(ctx: Context) { ctx.set("Content-Type", "application/xml"); return generateSitemap(ctx); } })();