diff --git a/package.json b/package.json index aa6a39099e..e1e5dbcb82 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "dependencies": { "colors": "1.4.0", "finalhandler": "^2.1.1", - "marked": "^12.0.2", + "marked": "^16.4.0", "puppeteer": "^24.37.5", "sade": "^1.8.1", "serve-static": "^2.2.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f75760e72b..16a2c832ec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: ^2.1.1 version: 2.1.1 marked: - specifier: ^12.0.2 - version: 12.0.2 + specifier: ^16.4.0 + version: 16.4.0 puppeteer: specifier: ^24.37.5 version: 24.37.5(typescript@5.9.3) @@ -1768,9 +1768,9 @@ packages: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} - marked@12.0.2: - resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} - engines: {node: '>= 18'} + marked@16.4.0: + resolution: {integrity: sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==} + engines: {node: '>= 20'} hasBin: true math-intrinsics@1.1.0: @@ -4397,7 +4397,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - marked@12.0.2: {} + marked@16.4.0: {} math-intrinsics@1.1.0: {} diff --git a/src/core/markdown.js b/src/core/markdown.js index 89d750dbcf..69a2dc44bc 100644 --- a/src/core/markdown.js +++ b/src/core/markdown.js @@ -20,16 +20,16 @@ const gtEntity = />/gm; const ampEntity = /&/gm; class Renderer extends marked.Renderer { - code(code, infoString, isEscaped) { - const { language, ...metaData } = Renderer.parseInfoString(infoString); + code({ text, lang, escaped }) { + const { language, ...metaData } = Renderer.parseInfoString(lang || ""); // regex to check whether the language is webidl if (/(^webidl$)/i.test(language)) { - return `
${code}
`; + return `
${text}
`; } const html = super - .code(code, language, isEscaped) + .code({ text, lang: language, escaped }) .replace(`class="language-`, `class="`); const { example, illegalExample } = metaData; @@ -40,9 +40,9 @@ class Renderer extends marked.Renderer { return html.replace("
", `
`);
   }
 
-  image(href, title, text) {
+  image({ href, title, text, tokens }) {
     if (!title) {
-      return super.image(href, title, text);
+      return super.image({ href, title, text, tokens });
     }
     const html = String.raw;
     return html`
@@ -76,20 +76,20 @@ class Renderer extends marked.Renderer {
     return { language, ...metaData };
   }
 
-  heading(text, level, raw) {
+  heading({ tokens, depth, text }) {
     const headingWithIdRegex = /(.+)\s+{#([\w-]+)}$/;
     if (headingWithIdRegex.test(text)) {
       const [, textContent, id] = text.match(headingWithIdRegex);
-      return `${textContent}`;
+      return `${textContent}`;
     }
-    return super.heading(text, level, raw);
+    return super.heading({ tokens, depth });
   }
 }
 
 /** @type {import('marked').MarkedOptions} */
 const config = {
   gfm: true,
-  renderer: new Renderer(),
+  renderer: /** @type {any} */ (new Renderer()),
 };
 
 /**