workspaceDependenciesOf function
List<WorkspacePackage>
workspaceDependenciesOf(
- Workspace workspace,
- List<
WorkspacePackage> packages
The workspace packages that packages depend on through dependencies,
directly or through other workspace packages, in workspace order. A
package in packages is included only when another package depends on
it.
Implementation
List<WorkspacePackage> workspaceDependenciesOf(
Workspace workspace,
List<WorkspacePackage> packages,
) {
final byName = {
for (final package in workspace.allPackages) package.name: package,
};
final found = <String>{};
void visit(WorkspacePackage package) {
for (final name in package.dependencies) {
final dependency = byName[name];
if (dependency != null && found.add(name)) {
visit(dependency);
}
}
}
packages.forEach(visit);
return [
for (final package in workspace.allPackages)
if (found.contains(package.name)) package,
];
}