resolve method
Resolves dependency injection registrations using the provided context.
Returns the registrations derived from the template and generated component configuration.
Implementation
Future<List<ResolvedRegistration>> resolve(
GeneratorContext context,
) async {
final registrations = <ResolvedRegistration>[];
for (final registration in context.template.di.allRegistrations) {
final abstraction = context.naming.resolveClass(registration.component);
final implementation = context.naming.resolveClass(registration.implementation ?? registration.component);
final implementationComponent = registration.implementation ?? registration.component;
final component = context.template.components[implementationComponent]!;
final output = TemplateRenderer.renderString(component.output, context.naming.variables);
final file = File('${context.featurePath}/$output');
if (!file.existsSync()) continue;
final parameters = await ConstructorResolver().resolve(file);
registrations.add(ResolvedRegistration(
lifecycle: registration.lifecycle,
abstraction: abstraction,
implementation: implementation,
variable: context.naming.resolveVariable(registration.component),
dependencies: parameters.map((e) => '${e.name}: sl()').toList(),
));
}
return registrations;
}