import rss from "@astrojs/rss"; import type { APIContext } from "astro"; import sanitizeHtml from "sanitize-html"; import { getAllPosts } from "@/data/post"; import { siteConfig } from "@/site.config"; import { markdownToHtml } from "@/utils/markdown"; export const GET = async (context: APIContext) => { const posts = await getAllPosts(); return rss({ title: siteConfig.title, description: siteConfig.description, site: context.site || import.meta.env.SITE, items: posts.map((post) => { const htmlContent = post.rendered?.html || markdownToHtml(post.body || ""); return { title: post.data.title, description: post.data.description, pubDate: post.data.publishDate, link: `posts/${post.id}/`, author: post.data.author, content: sanitizeHtml(htmlContent, { allowedTags: sanitizeHtml.defaults.allowedTags.concat(["img"]), }), }; }), customData: ``, }); };