applicationDefinitions static method

List<BeanDefinition<Object>> applicationDefinitions(
  1. Iterable<BeanModule> modules
)

Every definition of modules and of the modules they import, once.

Implementation

static List<BeanDefinition<Object>> applicationDefinitions(
  Iterable<BeanModule> modules,
) {
  final seen = Set<BeanModule>.identity();
  final found = <BeanDefinition<Object>>[];
  void visit(BeanModule module) {
    if (!seen.add(module)) {
      return;
    }
    module.imports.forEach(visit);
    found.addAll(module.definitions);
  }

  modules.forEach(visit);
  return found;
}