import rss from "@astrojs/rss"; import { getCollection } from "astro:content"; import getSortedPosts from "@/utils/getSortedPosts"; import sanitizeHtml from "sanitize-html"; import MarkdownIt from "markdown-it"; import { SITE } from "@/config"; const parser = new MarkdownIt(); export async function GET() { const posts = await getCollection("blog"); const sortedPosts = getSortedPosts(posts); return rss({ title: SITE.title, description: SITE.desc, site: SITE.website, items: sortedPosts.map(({ data, id }) => ({ link: `posts/${id}/`, content: sanitizeHtml(parser.render(posts.body), { allowedTags: sanitizeHtml.defaults.allowedTags.concat(["img"]), }), title: data.title, description: data.description, pubDate: new Date(data.modDatetime ?? data.pubDatetime), customData: `${posts.frontmatter.description}`, })), }); }