All files / src/agent markdown-to-tiptap.ts

14.28% Statements 1/7
0% Branches 0/4
0% Functions 0/2
14.28% Lines 1/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33                        20x                                        
/**
 * 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);
}