import { unified, type Processor } from "unified"; import type { Root } from 'hast'; import RemarkParse from "remark-parse"; import RemarkRehype from 'remark-rehype'; import RemarkOfm from 'remark-ofm'; import RemarkGfm from 'remark-gfm'; import RemarkFrontmatter from 'remark-frontmatter'; export default function useMarkdown(): (md: string) => Root { let processor: Processor; const parse = (markdown: string) => { if (!processor) { processor = unified().use([RemarkParse, RemarkGfm, RemarkOfm, RemarkFrontmatter]); processor.use(RemarkRehype); } const processed = processor.runSync(processor.parse(markdown)) as Root; return processed; } return parse; }