diff options
author | 2023-09-14 20:05:38 +0800 | |
---|---|---|
committer | 2023-09-14 20:05:38 +0800 | |
commit | 74dc3edb305c49feec49c39082fa836485da8a92 (patch) | |
tree | dd7b7584627f369c462c421892978658180287f1 /packages/markdown/remark/src | |
parent | 2e8726feec2e0d6ba8bd4db941009986e8e34141 (diff) | |
download | astro-74dc3edb305c49feec49c39082fa836485da8a92.tar.gz astro-74dc3edb305c49feec49c39082fa836485da8a92.tar.zst astro-74dc3edb305c49feec49c39082fa836485da8a92.zip |
Improve MDX rendering performance (#8533)
Diffstat (limited to 'packages/markdown/remark/src')
-rw-r--r-- | packages/markdown/remark/src/frontmatter-injection.ts | 8 | ||||
-rw-r--r-- | packages/markdown/remark/src/index.ts | 6 | ||||
-rw-r--r-- | packages/markdown/remark/src/internal.ts | 1 |
3 files changed, 8 insertions, 7 deletions
diff --git a/packages/markdown/remark/src/frontmatter-injection.ts b/packages/markdown/remark/src/frontmatter-injection.ts index 4f5118ece..4828873fd 100644 --- a/packages/markdown/remark/src/frontmatter-injection.ts +++ b/packages/markdown/remark/src/frontmatter-injection.ts @@ -27,12 +27,14 @@ export function safelyGetAstroData(vfileData: Data): MarkdownAstroData | Invalid return astro; } -export function setAstroData(vfileData: Data, astroData: MarkdownAstroData) { - vfileData.astro = astroData; +export function setVfileFrontmatter(vfile: VFile, frontmatter: Record<string, any>) { + vfile.data ??= {}; + vfile.data.astro ??= {}; + (vfile.data.astro as any).frontmatter = frontmatter; } /** - * @deprecated Use `setAstroData` instead + * @deprecated Use `setVfileFrontmatter` instead */ export function toRemarkInitializeAstroData({ userFrontmatter, diff --git a/packages/markdown/remark/src/index.ts b/packages/markdown/remark/src/index.ts index 41d08ec9a..89c9ca8bd 100644 --- a/packages/markdown/remark/src/index.ts +++ b/packages/markdown/remark/src/index.ts @@ -9,7 +9,7 @@ import type { import { InvalidAstroDataError, safelyGetAstroData, - setAstroData, + setVfileFrontmatter, } from './frontmatter-injection.js'; import { loadPlugins } from './load-plugins.js'; import { rehypeHeadingIds } from './rehype-collect-headings.js'; @@ -27,7 +27,7 @@ import { unified } from 'unified'; import { VFile } from 'vfile'; import { rehypeImages } from './rehype-images.js'; -export { InvalidAstroDataError } from './frontmatter-injection.js'; +export { InvalidAstroDataError, setVfileFrontmatter } from './frontmatter-injection.js'; export { rehypeHeadingIds } from './rehype-collect-headings.js'; export { remarkCollectImages } from './remark-collect-images.js'; export { remarkPrism } from './remark-prism.js'; @@ -125,7 +125,7 @@ export async function createMarkdownProcessor( return { async render(content, renderOpts) { const vfile = new VFile({ value: content, path: renderOpts?.fileURL }); - setAstroData(vfile.data, { frontmatter: renderOpts?.frontmatter ?? {} }); + setVfileFrontmatter(vfile, renderOpts?.frontmatter ?? {}); const result: MarkdownVFile = await parser.process(vfile).catch((err) => { // Ensure that the error message contains the input filename diff --git a/packages/markdown/remark/src/internal.ts b/packages/markdown/remark/src/internal.ts index a0f344a3a..0ab7e34bb 100644 --- a/packages/markdown/remark/src/internal.ts +++ b/packages/markdown/remark/src/internal.ts @@ -1,6 +1,5 @@ export { InvalidAstroDataError, safelyGetAstroData, - setAstroData, toRemarkInitializeAstroData, } from './frontmatter-injection.js'; |