/**
 * 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);
}
