[ci] format
This commit is contained in:
parent
40ef43a59b
commit
10a8fa5dcd
4 changed files with 35 additions and 31 deletions
|
@ -1,5 +1,4 @@
|
||||||
import { nodeTypes, compile as mdxCompile } from '@mdx-js/mdx';
|
import { compile as mdxCompile, nodeTypes } from '@mdx-js/mdx';
|
||||||
import { VFile } from 'vfile';
|
|
||||||
import mdxPlugin, { Options as MdxRollupPluginOptions } from '@mdx-js/rollup';
|
import mdxPlugin, { Options as MdxRollupPluginOptions } from '@mdx-js/rollup';
|
||||||
import type { AstroIntegration } from 'astro';
|
import type { AstroIntegration } from 'astro';
|
||||||
import { parse as parseESM } from 'es-module-lexer';
|
import { parse as parseESM } from 'es-module-lexer';
|
||||||
|
@ -10,10 +9,11 @@ import type { RemarkMdxFrontmatterOptions } from 'remark-mdx-frontmatter';
|
||||||
import remarkMdxFrontmatter from 'remark-mdx-frontmatter';
|
import remarkMdxFrontmatter from 'remark-mdx-frontmatter';
|
||||||
import remarkShikiTwoslash from 'remark-shiki-twoslash';
|
import remarkShikiTwoslash from 'remark-shiki-twoslash';
|
||||||
import remarkSmartypants from 'remark-smartypants';
|
import remarkSmartypants from 'remark-smartypants';
|
||||||
|
import { VFile } from 'vfile';
|
||||||
import type { Plugin as VitePlugin } from 'vite';
|
import type { Plugin as VitePlugin } from 'vite';
|
||||||
|
import rehypeCollectHeadings from './rehype-collect-headings.js';
|
||||||
import remarkPrism from './remark-prism.js';
|
import remarkPrism from './remark-prism.js';
|
||||||
import { getFileInfo, getFrontmatter } from './utils.js';
|
import { getFileInfo, getFrontmatter } from './utils.js';
|
||||||
import rehypeCollectHeadings from './rehype-collect-headings.js';
|
|
||||||
|
|
||||||
type WithExtends<T> = T | { extends: T };
|
type WithExtends<T> = T | { extends: T };
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import type { AstroConfig, SSRError } from 'astro';
|
|
||||||
import type { Options as AcornOpts } from 'acorn';
|
import type { Options as AcornOpts } from 'acorn';
|
||||||
import type { MdxjsEsm } from 'mdast-util-mdx';
|
|
||||||
import { parse } from 'acorn';
|
import { parse } from 'acorn';
|
||||||
|
import type { AstroConfig, SSRError } from 'astro';
|
||||||
|
import type { MdxjsEsm } from 'mdast-util-mdx';
|
||||||
|
|
||||||
import matter from 'gray-matter';
|
import matter from 'gray-matter';
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ describe('MDX getHeadings', () => {
|
||||||
const html = await fixture.readFile('/test/index.html');
|
const html = await fixture.readFile('/test/index.html');
|
||||||
const { document } = parseHTML(html);
|
const { document } = parseHTML(html);
|
||||||
|
|
||||||
const h2Ids = document.querySelectorAll('h2').map(el => el?.id);
|
const h2Ids = document.querySelectorAll('h2').map((el) => el?.id);
|
||||||
const h3Ids = document.querySelectorAll('h3').map(el => el?.id);
|
const h3Ids = document.querySelectorAll('h3').map((el) => el?.id);
|
||||||
expect(document.querySelector('h1').id).to.equal('heading-test');
|
expect(document.querySelector('h1').id).to.equal('heading-test');
|
||||||
expect(h2Ids).to.contain('section-1');
|
expect(h2Ids).to.contain('section-1');
|
||||||
expect(h2Ids).to.contain('section-2');
|
expect(h2Ids).to.contain('section-2');
|
||||||
|
@ -32,25 +32,29 @@ describe('MDX getHeadings', () => {
|
||||||
it('generates correct getHeadings() export', async () => {
|
it('generates correct getHeadings() export', async () => {
|
||||||
const { headingsByPage } = JSON.parse(await fixture.readFile('/pages.json'));
|
const { headingsByPage } = JSON.parse(await fixture.readFile('/pages.json'));
|
||||||
// TODO: make this a snapshot test :)
|
// TODO: make this a snapshot test :)
|
||||||
expect(JSON.stringify(headingsByPage['./test.mdx'])).to.equal(JSON.stringify([
|
expect(JSON.stringify(headingsByPage['./test.mdx'])).to.equal(
|
||||||
{ depth: 1, slug: 'heading-test', text: 'Heading test' },
|
JSON.stringify([
|
||||||
{ depth: 2, slug: 'section-1', text: 'Section 1' },
|
{ depth: 1, slug: 'heading-test', text: 'Heading test' },
|
||||||
{ depth: 3, slug: 'subsection-1', text: 'Subsection 1' },
|
{ depth: 2, slug: 'section-1', text: 'Section 1' },
|
||||||
{ depth: 3, slug: 'subsection-2', text: 'Subsection 2' },
|
{ depth: 3, slug: 'subsection-1', text: 'Subsection 1' },
|
||||||
{ depth: 2, slug: 'section-2', text: 'Section 2' }
|
{ depth: 3, slug: 'subsection-2', text: 'Subsection 2' },
|
||||||
]));
|
{ depth: 2, slug: 'section-2', text: 'Section 2' },
|
||||||
|
])
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('generates correct getHeadings() export for JSX expressions', async () => {
|
it('generates correct getHeadings() export for JSX expressions', async () => {
|
||||||
const { headingsByPage } = JSON.parse(await fixture.readFile('/pages.json'));
|
const { headingsByPage } = JSON.parse(await fixture.readFile('/pages.json'));
|
||||||
expect(JSON.stringify(headingsByPage['./test-with-jsx-expressions.mdx'])).to.equal(JSON.stringify([
|
expect(JSON.stringify(headingsByPage['./test-with-jsx-expressions.mdx'])).to.equal(
|
||||||
{
|
JSON.stringify([
|
||||||
depth: 1,
|
{
|
||||||
slug: 'heading-test-with-jsx-expressions',
|
depth: 1,
|
||||||
text: 'Heading test with JSX expressions'
|
slug: 'heading-test-with-jsx-expressions',
|
||||||
},
|
text: 'Heading test with JSX expressions',
|
||||||
{ depth: 2, slug: 'h2title', text: 'h2Title' },
|
},
|
||||||
{ depth: 3, slug: 'h3title', text: 'h3Title' }
|
{ depth: 2, slug: 'h2title', text: 'h2Title' },
|
||||||
]));
|
{ depth: 3, slug: 'h3title', text: 'h3Title' },
|
||||||
|
])
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,12 +9,12 @@ import { toString } from 'mdast-util-to-string';
|
||||||
import { loadFixture } from '../../../astro/test/test-utils.js';
|
import { loadFixture } from '../../../astro/test/test-utils.js';
|
||||||
|
|
||||||
export function rehypeReadingTime() {
|
export function rehypeReadingTime() {
|
||||||
return function (tree) {
|
return function (tree) {
|
||||||
const readingTime = getReadingTime(toString(tree))
|
const readingTime = getReadingTime(toString(tree));
|
||||||
tree.children.unshift(
|
tree.children.unshift(
|
||||||
jsToTreeNode(`export const readingTime = ${JSON.stringify(readingTime)}`)
|
jsToTreeNode(`export const readingTime = ${JSON.stringify(readingTime)}`)
|
||||||
)
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const FIXTURE_ROOT = new URL('./fixtures/mdx-rehype-plugins/', import.meta.url);
|
const FIXTURE_ROOT = new URL('./fixtures/mdx-rehype-plugins/', import.meta.url);
|
||||||
|
@ -37,7 +37,7 @@ describe('MDX rehype plugins', () => {
|
||||||
it('removes default getHeadings', async () => {
|
it('removes default getHeadings', async () => {
|
||||||
const html = await fixture.readFile('/space-ipsum/index.html');
|
const html = await fixture.readFile('/space-ipsum/index.html');
|
||||||
const { document } = parseHTML(html);
|
const { document } = parseHTML(html);
|
||||||
|
|
||||||
const headings = [...document.querySelectorAll('h1, h2')];
|
const headings = [...document.querySelectorAll('h1, h2')];
|
||||||
expect(headings.length).to.be.greaterThan(0);
|
expect(headings.length).to.be.greaterThan(0);
|
||||||
for (const heading of headings) {
|
for (const heading of headings) {
|
||||||
|
@ -47,7 +47,7 @@ describe('MDX rehype plugins', () => {
|
||||||
|
|
||||||
it('supports custom rehype plugins - reading time', async () => {
|
it('supports custom rehype plugins - reading time', async () => {
|
||||||
const readingTime = JSON.parse(await fixture.readFile('/reading-time.json'));
|
const readingTime = JSON.parse(await fixture.readFile('/reading-time.json'));
|
||||||
|
|
||||||
expect(readingTime).to.not.be.null;
|
expect(readingTime).to.not.be.null;
|
||||||
expect(readingTime.text).to.match(/^\d+ min read/);
|
expect(readingTime.text).to.match(/^\d+ min read/);
|
||||||
});
|
});
|
||||||
|
@ -70,7 +70,7 @@ describe('MDX rehype plugins', () => {
|
||||||
it('preserves default getHeadings', async () => {
|
it('preserves default getHeadings', async () => {
|
||||||
const html = await fixture.readFile('/space-ipsum/index.html');
|
const html = await fixture.readFile('/space-ipsum/index.html');
|
||||||
const { document } = parseHTML(html);
|
const { document } = parseHTML(html);
|
||||||
|
|
||||||
const headings = [...document.querySelectorAll('h1, h2')];
|
const headings = [...document.querySelectorAll('h1, h2')];
|
||||||
expect(headings.length).to.be.greaterThan(0);
|
expect(headings.length).to.be.greaterThan(0);
|
||||||
for (const heading of headings) {
|
for (const heading of headings) {
|
||||||
|
|
Loading…
Reference in a new issue