import assert from 'node:assert/strict'; import { describe, it } from 'node:test'; import { compile as _compile } from '@mdx-js/mdx'; import { rehypeOptimizeStatic } from '../../dist/rehype-optimize-static.js'; /** * @param {string} mdxCode * @param {Readonly} options */ async function compile(mdxCode, options) { const result = await _compile(mdxCode, { jsx: true, rehypePlugins: [rehypeOptimizeStatic], ...options, }); const code = result.toString(); // Capture the returned JSX code for testing const jsx = /return (.+);\n\}\nexport default function MDXContent/s.exec(code)?.[1]; if (jsx == null) throw new Error('Could not find JSX code in compiled MDX'); return dedent(jsx); } function dedent(str) { const lines = str.split('\n'); if (lines.length <= 1) return str; // Get last line indent, and dedent this amount for the other lines const lastLineIndent = lines[lines.length - 1].match(/^\s*/)[0].length; return lines.map((line, i) => (i === 0 ? line : line.slice(lastLineIndent))).join('\n'); } describe('rehype-optimize-static', () => { it('works', async () => { const jsx = await compile(`# hello`); assert.equal( jsx, `\ <_components.h1 {...{ "set:html": "hello" }} />`, ); }); it('groups sibling nodes as a single Fragment', async () => { const jsx = await compile(`\ # hello foo bar `); assert.equal( jsx, `\ `, ); }); it('skips optimization of components', async () => { const jsx = await compile(`\ import Comp from './Comp.jsx'; # hello This is a `); assert.equal( jsx, `\ <><_components.p>{"This is a "}`, ); }); it('optimizes explicit html elements', async () => { const jsx = await compile(`\ # hello foo bar baz qux `); assert.equal( jsx, `\ `, ); }); });