raviqqe/self-talk

View on GitHub
src/domain/document.ts

Summary

Maintainability
A
0 mins
Test Coverage
import markdownParser from "prettier/parser-markdown.js";
import { format } from "prettier/standalone.js";

export interface Document {
  id: string;
  text: string; // in Markdown
}

export async function formatDocument(document: Document): Promise<Document> {
  return {
    ...document,
    text: (
      await format(document.text, {
        parser: "markdown",
        plugins: [markdownParser],
      })
    )
      .trim()
      // https://github.com/prettier/prettier/issues/6213
      .replace(/\\*\$/g, "$"),
  };
}

export function validateDocument(document: Document): void {
  if (!document.text) {
    throw new Error("document cannot be empty");
  }
}