From 2bb2b5e8ad0f19e1a8104d31d5f696fb30f939a0 Mon Sep 17 00:00:00 2001 From: bholmesdev Date: Thu, 19 May 2022 17:37:21 -0400 Subject: [PATCH] feat: add global hashset for seen metadata --- packages/astro/src/core/render/util.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/astro/src/core/render/util.ts b/packages/astro/src/core/render/util.ts index db5764aa0..da34dfd3c 100644 --- a/packages/astro/src/core/render/util.ts +++ b/packages/astro/src/core/render/util.ts @@ -48,15 +48,19 @@ export const isCSSRequest = (request: string): boolean => cssRe.test(request); // Ex. markdown files imported asynchronously or via Astro.glob(...) // This calls each md file's $$loadMetadata to discover those dependencies // and writes all results to the input `metadata` object +const seenMdMetadata = new Set(); export async function collectMdMetadata( metadata: Metadata, modGraph: ModuleNode, - viteServer: ViteDevServer + viteServer: ViteDevServer, ) { const importedModules = [...(modGraph?.importedModules ?? [])]; await Promise.all( importedModules.map(async (importedModule) => { // recursively check for importedModules + if (!importedModule.id || seenMdMetadata.has(importedModule.id)) return; + + seenMdMetadata.add(importedModule.id); await collectMdMetadata(metadata, importedModule, viteServer); if (!importedModule?.id?.endsWith(MARKDOWN_IMPORT_FLAG)) return;