import { Marked } from "marked"; import { markedHighlight } from "marked-highlight"; import hljs from "highlight.js"; import createDOMPurify from "dompurify"; import { JSDOM } from "jsdom"; import { homedir } from "os"; import { resolve as resolvePath } from "path"; const marked = new Marked( markedHighlight({ emptyLangClass: "hljs", langPrefix: "hljs language-", highlight(code, lang) { const language = lang && hljs.getLanguage(lang) ? lang : "plaintext"; try { return hljs.highlight(code, { language }).value; } catch { return code; } }, }) ); marked.setOptions({ gfm: true, breaks: true }); // XSS boundary: marked passes raw HTML through by default, so any body with // /