import { Marked, type MarkedExtension } from "marked"; import { createDirectives, presetDirectiveConfigs } from "marked-directive"; import markedAlert from "marked-alert"; import markedMermaid from "./mermaid"; import markedTable from "./table"; import { gfmHeadingId } from "marked-gfm-heading-id"; import markedColumns from "./columns"; import markedCodeBlockYamlTag from "./code-block-yaml-tag"; import { iconDirective, setIconBase } from "./icon"; // 使用 marked-directive 来支持指令语法 const marked = new Marked() .use(gfmHeadingId()) .use(markedAlert()) .use(markedMermaid()) .use(markedTable()) .use(markedCodeBlockYamlTag()) .use( createDirectives([ ...presetDirectiveConfigs, { marker: "::::", level: "container", }, { marker: ":::::", level: "container", }, iconDirective, ]), { extensions: [...markedColumns()], }, ); export function parseMarkdown(content: string, basePath?: string): string { setIconBase(basePath); return marked.parse(content.trimStart()) as string; } export { marked };