/** * Server-side Markdown → Tiptap JSON converter. * * Uses @tiptap/markdown's MarkdownManager.parse() — the same approach * as content-serializer.ts but in reverse direction. * No DOM needed, no new dependencies. */ import StarterKit from '@tiptap/starter-kit'; import Link from '@tiptap/extension-link'; import { MarkdownManager } from '@tiptap/markdown'; let _manager: MarkdownManager | null = null; function getManager(): MarkdownManager { if (!_manager) { _manager = new MarkdownManager({ extensions: [StarterKit, Link], }); } return _manager; } /** * Convert a markdown string to Tiptap JSON document. */ export function markdownToTiptapJson(markdown: string): object { if (!markdown.trim()) { return { type: 'doc', content: [{ type: 'paragraph' }] }; } return getManager().parse(markdown); }