From 557721ebe46feee6986c4661d6c0653aa759f05c Mon Sep 17 00:00:00 2001 From: Fractalo <42487844+fractalo@users.noreply.github.com> Date: Mon, 19 Jun 2023 03:48:20 +0900 Subject: [PATCH] fix: infinite recursion on circular dependency (#720) * fix: infinite recursion on circular dependency * Create moody-ligers-exercise.md --------- Co-authored-by: Jack Steam --- .changeset/moody-ligers-exercise.md | 5 +++++ packages/vite-plugin/src/node/compileFileResources.ts | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changeset/moody-ligers-exercise.md diff --git a/.changeset/moody-ligers-exercise.md b/.changeset/moody-ligers-exercise.md new file mode 100644 index 000000000..ceca48566 --- /dev/null +++ b/.changeset/moody-ligers-exercise.md @@ -0,0 +1,5 @@ +--- +"@crxjs/vite-plugin": patch +--- + +fix: infinite recursion on circular dependency diff --git a/packages/vite-plugin/src/node/compileFileResources.ts b/packages/vite-plugin/src/node/compileFileResources.ts index 622b59bcc..9b86df206 100644 --- a/packages/vite-plugin/src/node/compileFileResources.ts +++ b/packages/vite-plugin/src/node/compileFileResources.ts @@ -26,14 +26,20 @@ export function compileFileResources( css: new Set(), imports: new Set(), }, + processedFiles = new Set(), ): FileResources { + if (processedFiles.has(fileName)) { + return resources + } + processedFiles.add(fileName) + const chunk = chunks.get(fileName) if (chunk) { const { modules, facadeModuleId, imports, dynamicImports } = chunk for (const x of imports) resources.imports.add(x) for (const x of dynamicImports) resources.imports.add(x) for (const x of [...imports, ...dynamicImports]) - compileFileResources(x, { chunks, files, config }, resources) + compileFileResources(x, { chunks, files, config }, resources, processedFiles) for (const m of Object.keys(modules)) if (m !== facadeModuleId) { const key = prefix('/', relative(config.root, m.split('?')[0])) @@ -47,6 +53,7 @@ export function compileFileResources( script.fileName, { chunks, files, config }, resources, + processedFiles, ) } }