import * as mdx from "@mdx-js/mdx";
import * as swc from "@swc/core";
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';

export function renderMdx(markdown: string): string {
  const esmCode = mdx.compileSync(markdown, {
    jsxRuntime: "classic",
    pragma: "Vue.h",
    pragmaFrag: "Vue.Fragment",
    pragmaImportSource: "vue",
    remarkPlugins: [remarkMath],
    rehypePlugins: [rehypeKatex]
  }).value.toString("utf-8");

  const codeRemovedImport = esmCode.replace(/^import .*$/m, "");

  return swc.transformSync(codeRemovedImport, {
    jsc: {
      parser: {
        syntax: "ecmascript"
      },
      loose: true,
    },
    minify: true,
    module: { type: "commonjs" },
  }).code;
}