|
1 | 1 | import { error, type RequestHandler } from "@sveltejs/kit"; |
2 | 2 | import { Feed } from "feed"; |
| 3 | +import { marked } from "marked"; |
3 | 4 | import { discoverer } from "$lib/server/package-discoverer"; |
4 | 5 | import { getAllPackagesReleases, getPackageReleases } from "../releases"; |
5 | 6 |
|
@@ -33,6 +34,17 @@ function getBaseFeed(url: URL, title: string, mode: "all" | "single" = "single") |
33 | 34 | return feed; |
34 | 35 | } |
35 | 36 |
|
| 37 | +/** |
| 38 | + * Convert a raw Markdown into a basic HTML structure |
| 39 | + * @param md the Markdown text |
| 40 | + * @return the HTML conversion |
| 41 | + */ |
| 42 | +function mdToHtml(md: string | null | undefined) { |
| 43 | + if (!md) return undefined; |
| 44 | + // we'll assume GH content doesn't need to be sanitized *wink wink* |
| 45 | + return marked(md) as string; // can only be a Promise if the `async` option is set to true, not the case here |
| 46 | +} |
| 47 | + |
36 | 48 | /** |
37 | 49 | * A SvelteKit request handler utility to create an RSS feed for packages |
38 | 50 | * @param response the handler converting the final feed object into a response |
@@ -79,7 +91,7 @@ export function rssHandler(response: (feed: Feed) => Response): RequestHandler { |
79 | 91 | email: release.author.email ?? undefined |
80 | 92 | } |
81 | 93 | ], |
82 | | - content: release.body_html ?? release.body ?? undefined, |
| 94 | + content: release.body_html ?? mdToHtml(release.body), |
83 | 95 | date: new Date(release.published_at ?? release.created_at), |
84 | 96 | description: `${release.cleanName} ${release.cleanVersion} release`, |
85 | 97 | id: release.id.toString(), |
|
0 commit comments