getSerializableLibraries method

List<IRSerializableLibrary> getSerializableLibraries(
  1. SubjectGenContext<Element> context
)

Implementation

List<IRSerializableLibrary> getSerializableLibraries(SubjectGenContext<Element> context) {
  var typeChecker = TypeChecker.fromRuntime(SerializableLibrary);
  return context.matches
      .expand((element) => element.metadata.whereTypeChecker(typeChecker).map((e) => [element,e]))
      .map((e) {
        var target = e[0] as Element;
        var annotation = (e[1] as ElementAnnotation).computeConstantValue()!;
        var reader = ConstantReader(annotation);
        if (target is! LibraryImportElement) {
          log.severe("SerializableLibrary annotation can only be used on library imports");
          return null;
        }
        var importUri = target.importedLibrary!.source.uri;

        return IRSerializableLibrary(
          importUri.toString(),
          include: reader.read("include").isNull ? null : reader.read("include").listValue.map((e) => RegExp(e.toStringValue()!)).toList(),
          exclude: reader.read("exclude").isNull ? null : reader.read("exclude").listValue.map((e) => RegExp(e.toStringValue()!)).toList(),
        );
      })
      .whereNotNull()
      .toList();
}