resolve method
Returns a list where dependencies appear before dependents using only the provided module instances.
Implementation
List<IModuleCodeContributor> resolve(
List<IModuleCodeContributor> selectedModules,
) {
final byName = {
for (final m in selectedModules) m.moduleDescriptor.name: m,
};
final visited = <String>{};
final sorted = <IModuleCodeContributor>[];
void visit(String name) {
if (visited.contains(name)) return;
final module = byName[name];
if (module == null) return;
for (final dep in module.moduleDescriptor.dependsOn) {
visit(dep);
}
visited.add(name);
sorted.add(module);
}
for (final module in selectedModules) {
visit(module.moduleDescriptor.name);
}
return sorted;
}