aboutsummaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-04-22 21:53:50 +0300
committerValentin Popov <valentin@popov.link>2026-04-22 21:53:50 +0300
commit9a0746a4715400ab8ef37ec23a4df93ae712e74b (patch)
tree5678821ab8e56f3098a26240f5db0f13fa25bf5c /src/pages
parenta6efbdc3aba7cbc3918976ad1a3c4143363c6f7a (diff)
downloadpopov.link-9a0746a4715400ab8ef37ec23a4df93ae712e74b.tar.xz
popov.link-9a0746a4715400ab8ef37ec23a4df93ae712e74b.zip
feat: add RSS feed generation and update package metadata
- Implemented a new RSS feed generation feature in src/pages/feed.xml.ts, allowing users to follow blog updates. - Updated package.json and package-lock.json to include license information and new type definitions for markdown-it and sanitize-html. - Refactored createOgImage function to return Uint8Array instead of Buffer for better compatibility. - Simplified pageSchema by removing the optional mainEntityId parameter for cleaner schema generation.
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/feed.xml.ts (renamed from src/pages/feed.xml.js)13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/pages/feed.xml.js b/src/pages/feed.xml.ts
index 005f2d8..9d0568f 100644
--- a/src/pages/feed.xml.js
+++ b/src/pages/feed.xml.ts
@@ -1,12 +1,13 @@
+import type { APIContext } from "astro";
import { getCollection } from "astro:content";
import MarkdownIt from "markdown-it";
import rss from "@astrojs/rss";
import sanitizeHtml from "sanitize-html";
import { config } from "../config";
-const parser = new MarkdownIt({ html: true, linkify: true });
+const parser = new MarkdownIt({ html: false, linkify: true });
-export async function GET(context) {
+export async function GET(context: APIContext) {
const title = "RSS Feed | Valentin Popov Blog";
const description = "Follow the latest posts from Valentin Popov via RSS.";
@@ -17,13 +18,13 @@ export async function GET(context) {
return rss({
title,
description,
- site: context.site,
+ site: context.site ?? config.author.url,
xmlns: {
atom: "http://www.w3.org/2005/Atom",
content: "http://purl.org/rss/1.0/modules/content/",
dc: "http://purl.org/dc/elements/1.1/",
},
- customData: [`<language>en</language>`, `<atom:link href="${feedUrl}" rel="self" type="application/rss+xml"/>`].join(""),
+ customData: `<atom:link href="${feedUrl}" rel="self" type="application/rss+xml"/>`,
items: posts.map((post) => ({
title: post.data.title,
description: post.data.description,
@@ -36,8 +37,8 @@ export async function GET(context) {
...sanitizeHtml.defaults.allowedAttributes,
img: ["src", "alt", "title", "loading", "decoding"],
code: ["class"],
- span: ["class", "style"],
- pre: ["class", "style"],
+ span: ["class"],
+ pre: ["class"],
a: ["href", "name", "target", "rel"],
},
}),