From d7bac04b42caeb809d9151c30f5b035dea053034 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Fri, 25 Jul 2025 18:09:05 +0200 Subject: [PATCH] Store only visible packages as dependency in the search index. --- app/lib/search/backend.dart | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/app/lib/search/backend.dart b/app/lib/search/backend.dart index 47118784e..5f657c5de 100644 --- a/app/lib/search/backend.dart +++ b/app/lib/search/backend.dart @@ -375,24 +375,35 @@ class SearchBackend { likeCount: p.likes, grantedPoints: scoreCard.grantedPubPoints, maxPoints: scoreCard.maxPubPoints, - dependencies: _buildDependencies(pv.pubspec!, scoreCard), + dependencies: await _buildDependencies(pv.pubspec!, scoreCard), apiDocPages: apiDocPages, timestamp: clock.now().toUtc(), sourceUpdated: sourceUpdated, ); } - Map _buildDependencies(Pubspec pubspec, ScoreCardData? view) { - final Map dependencies = {}; - view?.panaReport?.allDependencies?.forEach((p) { - dependencies[p] = DependencyTypes.transitive; - }); - pubspec.devDependencies.forEach((package) { - dependencies[package] = DependencyTypes.dev; - }); - pubspec.dependencyNames.forEach((package) { - dependencies[package] = DependencyTypes.direct; - }); + Future> _buildDependencies( + Pubspec pubspec, ScoreCardData? view) async { + final dependencies = {}; + for (final p in view?.panaReport?.allDependencies ?? []) { + if (await packageBackend.isPackageVisible(p)) { + dependencies[p] = DependencyTypes.transitive; + } + } + for (final p in pubspec.devDependencies) { + // Note: at this point the visibility may have been checked. + if (dependencies.containsKey(p) || + await packageBackend.isPackageVisible(p)) { + dependencies[p] = DependencyTypes.dev; + } + } + for (final p in pubspec.dependencyNames) { + // Note: at this point the visibility may have been checked. + if (dependencies.containsKey(p) || + await packageBackend.isPackageVisible(p)) { + dependencies[p] = DependencyTypes.direct; + } + } return dependencies; }