Skip to content

Commit 71875bc

Browse files
feat: parse the releases body to HTML
marked is always there when I need it
1 parent abf3c44 commit 71875bc

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"eslint-plugin-svelte": "^3.5.1",
4343
"feed": "^4.2.2",
4444
"globals": "^16.0.0",
45+
"marked": "^15.0.11",
4546
"mode-watcher": "^1.0.2",
4647
"octokit": "^4.1.3",
4748
"posthog-js": "^1.236.7",

pnpm-lock.yaml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/routes/package/[...package]/rss.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { error, type RequestHandler } from "@sveltejs/kit";
22
import { Feed } from "feed";
3+
import { marked } from "marked";
34
import { discoverer } from "$lib/server/package-discoverer";
45
import { getAllPackagesReleases, getPackageReleases } from "../releases";
56

@@ -33,6 +34,17 @@ function getBaseFeed(url: URL, title: string, mode: "all" | "single" = "single")
3334
return feed;
3435
}
3536

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+
3648
/**
3749
* A SvelteKit request handler utility to create an RSS feed for packages
3850
* @param response the handler converting the final feed object into a response
@@ -79,7 +91,7 @@ export function rssHandler(response: (feed: Feed) => Response): RequestHandler {
7991
email: release.author.email ?? undefined
8092
}
8193
],
82-
content: release.body_html ?? release.body ?? undefined,
94+
content: release.body_html ?? mdToHtml(release.body),
8395
date: new Date(release.published_at ?? release.created_at),
8496
description: `${release.cleanName} ${release.cleanVersion} release`,
8597
id: release.id.toString(),

0 commit comments

Comments
 (0)