generate method
Generates JSON configuration for all injectable classes in library.
Implementation
@override
FutureOr<String?> generate(LibraryReader library, BuildStep buildStep) async {
final allDepsInStep = <DependencyConfig>[];
final libs = await buildStep.resolver.libraries.toList();
final resolver = getResolver(libs);
for (var clazz in library.classes) {
if (_moduleChecker.hasAnnotationOfExact(clazz)) {
throwIf(
!clazz.isAbstract,
'[${clazz.displayName}] must be an abstract class!',
element: clazz,
);
final executables = <ExecutableElement>[
...clazz.getters,
...clazz.methods,
];
for (var element in executables) {
if (element.isPrivate) continue;
allDepsInStep.add(
DependencyResolver(resolver).resolveModuleMember(clazz, element),
);
}
} else if (_hasInjectable(clazz) ||
(_autoRegister && _hasConventionalMatch(clazz))) {
allDepsInStep.add(
DependencyResolver(resolver).resolve(clazz),
);
}
}
return allDepsInStep.isNotEmpty ? jsonEncode(allDepsInStep) : null;
}