diff --git a/package-lock.json b/package-lock.json index fc71bf6..7bb0c46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "js-yaml": "^4.1.0", "lightningcss": "^1.32.0", "lint-staged": "^17.0.7", - "marked": "^11.1.0", + "marked": "^18.0.7", "prettier": "^3.8.4", "prismjs": "^1.29.0", "quote-quote": "^1.3.0", @@ -3207,16 +3207,16 @@ } }, "node_modules/marked": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-11.2.0.tgz", - "integrity": "sha512-HR0m3bvu0jAPYiIvLUUQtdg1g6D247//lvcekpHO1WMvbwDlwSkZAX9Lw4F4YHE1T0HaaNve0tuAWuV1UJ6vtw==", + "version": "18.0.7", + "resolved": "https://registry.npmjs.org/marked/-/marked-18.0.7.tgz", + "integrity": "sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA==", "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/mathml-tag-names": { diff --git a/package.json b/package.json index de8cd63..675ba08 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "js-yaml": "^4.1.0", "lightningcss": "^1.32.0", "lint-staged": "^17.0.7", - "marked": "^11.1.0", + "marked": "^18.0.7", "prettier": "^3.8.4", "prismjs": "^1.29.0", "quote-quote": "^1.3.0", diff --git a/src/build/posts/parse-markdown.ts b/src/build/posts/parse-markdown.ts index ccd0148..cc34246 100644 --- a/src/build/posts/parse-markdown.ts +++ b/src/build/posts/parse-markdown.ts @@ -14,7 +14,7 @@ export function parseMarkdown(content: string): string { addHeadingAnchor(renderer); secureExternalLinks(renderer); - const parsed = marked(content, { renderer }); + const parsed = marked.parse(content, { renderer }); // Safeguard in case an async plugin ever makes it return a Promise. if (typeof parsed !== 'string') { @@ -24,52 +24,38 @@ export function parseMarkdown(content: string): string { } function addSyntaxHighlighting(renderer: Renderer): void { - renderer.code = (code, infostring) => { - if (!infostring) { - return `
${encode(code)}`;
+ renderer.code = ({ text, lang }) => {
+ if (!lang) {
+ return `${encode(text)}`;
}
- const language = prism.languages[infostring];
-
+ const language = prism.languages[lang];
if (!language) {
throw new Error(
- `Language not supported by Prism: ${infostring}. It may needs to be imported.`,
+ `Language "${lang}" is not supported by Prism; it may need to be imported.`,
);
}
- const highlightedCode = prism.highlight(code, language, infostring);
- return `${highlightedCode}`;
+ const highlighted = prism.highlight(text, language, lang);
+ return `${highlighted}`;
};
}
function addHeadingAnchor(renderer: Renderer): void {
- const originalHeadingRenderer = renderer.heading;
-
- renderer.heading = (text, level, raw) => {
- const html = originalHeadingRenderer.call(renderer, text, level, raw);
-
+ renderer.heading = ({ text, depth }) => {
// Don't add anchors to the smaller headings.
- if (level > 3) {
- return html;
+ if (depth > 3) {
+ return `