From de2903b101c160867dd29f5eb585eea916a1a9a8 Mon Sep 17 00:00:00 2001 From: Gaurav <39389231+gsquared94@users.noreply.github.com> Date: Wed, 10 Sep 2025 11:39:02 -0700 Subject: [PATCH] fix: make `bfsFileSearch` more efficient (#8173) --- packages/core/src/utils/bfsFileSearch.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/core/src/utils/bfsFileSearch.ts b/packages/core/src/utils/bfsFileSearch.ts index cb2f387262..2d66f719b7 100644 --- a/packages/core/src/utils/bfsFileSearch.ts +++ b/packages/core/src/utils/bfsFileSearch.ts @@ -99,6 +99,16 @@ export async function bfsFileSearch( for (const { currentDir, entries } of results) { for (const entry of entries) { const fullPath = path.join(currentDir, entry.name); + const isDirectory = entry.isDirectory(); + const isMatchingFile = entry.isFile() && entry.name === fileName; + + if (!isDirectory && !isMatchingFile) { + continue; + } + if (isDirectory && ignoreDirsSet.has(entry.name)) { + continue; + } + if ( fileService?.shouldIgnoreFile(fullPath, { respectGitIgnore: options.fileFilteringOptions?.respectGitIgnore, @@ -109,11 +119,9 @@ export async function bfsFileSearch( continue; } - if (entry.isDirectory()) { - if (!ignoreDirsSet.has(entry.name)) { - queue.push(fullPath); - } - } else if (entry.isFile() && entry.name === fileName) { + if (isDirectory) { + queue.push(fullPath); + } else { foundFiles.push(fullPath); } }