diff --git a/package-lock.json b/package-lock.json index efcb8409ed..f704d49ad8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,6 +95,8 @@ "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", "lerna": "^7.4.2", + "marked": "^12.0.2", + "marked-highlight": "^2.1.1", "minimist": "^1.2.8", "ng-packagr": "^17.0.0", "plugin-error": "^1.0.1", @@ -14321,6 +14323,18 @@ "lower-case": "^1.1.2" } }, + "node_modules/dgeni-packages/node_modules/marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "dev": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/dgeni-packages/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -24208,15 +24222,24 @@ } }, "node_modules/marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz", + "integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==", "dev": true, "bin": { - "marked": "bin/marked" + "marked": "bin/marked.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" + } + }, + "node_modules/marked-highlight": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.1.1.tgz", + "integrity": "sha512-ktdqwtBne8rim5mb+vvZ9FzElGFb+CHCgkx/g6DSzTjaSrVnxsJdSzB5YgCkknFrcOW+viocM1lGyIjC0oa3fg==", + "dev": true, + "peerDependencies": { + "marked": ">=4 <13" } }, "node_modules/matchdep": { diff --git a/package.json b/package.json index 6485ee9bc3..bfff33448a 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,8 @@ "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", "lerna": "^7.4.2", + "marked": "^12.0.2", + "marked-highlight": "^2.1.1", "minimist": "^1.2.8", "ng-packagr": "^17.0.0", "plugin-error": "^1.0.1", diff --git a/tools/dgeni/src/processors/markdown.ts b/tools/dgeni/src/processors/markdown.ts index 7aca1761ba..15bf3949a5 100644 --- a/tools/dgeni/src/processors/markdown.ts +++ b/tools/dgeni/src/processors/markdown.ts @@ -4,15 +4,31 @@ import { } from 'dgeni'; import hljs from 'highlight.js'; import bash from 'highlight.js/lib/languages/bash'; +import graphql from 'highlight.js/lib/languages/graphql'; import scss from 'highlight.js/lib/languages/scss'; import typescript from 'highlight.js/lib/languages/typescript'; import xml from 'highlight.js/lib/languages/xml'; -import marked from 'marked'; +import { marked } from 'marked'; +import { markedHighlight } from 'marked-highlight'; hljs.registerLanguage('typescript', typescript); +hljs.registerLanguage('ts', typescript); hljs.registerLanguage('xml', xml); hljs.registerLanguage('scss', scss); hljs.registerLanguage('bash', bash); +hljs.registerLanguage('graphql', graphql); +hljs.registerLanguage('gql', graphql); + +// marked.use(markedMermaid); +marked.use( + markedHighlight({ + // langPrefix: 'hljs language-', + highlight: (code, lang, info) => { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + return hljs.highlight(code, { language }).value; + }, + }), +); export class MarkdownCodeProcessor implements Processor { name = 'markdown'; @@ -23,10 +39,6 @@ export class MarkdownCodeProcessor implements Processor { constructor() {} $process(docs: Document[]) { - marked.setOptions({ - highlight: (code, lang) => lang ? hljs.highlight(code, { language: lang }).value : code, - }); - return docs.map((doc) => { if(this.docTypes.includes(doc.docType)){ doc.content = marked.parse(doc.content);