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