summaryrefslogtreecommitdiff
path: root/packages/markdown/remark/src
diff options
context:
space:
mode:
authorGravatar Bjorn Lu <bjornlu.dev@gmail.com> 2023-09-14 20:05:38 +0800
committerGravatar GitHub <noreply@github.com> 2023-09-14 20:05:38 +0800
commit74dc3edb305c49feec49c39082fa836485da8a92 (patch)
treedd7b7584627f369c462c421892978658180287f1 /packages/markdown/remark/src
parent2e8726feec2e0d6ba8bd4db941009986e8e34141 (diff)
downloadastro-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.ts8
-rw-r--r--packages/markdown/remark/src/index.ts6
-rw-r--r--packages/markdown/remark/src/internal.ts1
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';