JsonParamInfo? validJsonParamType()

in functions_framework_builder/lib/src/valid_json_utils.dart [53:76]


JsonParamInfo? validJsonParamType(DartType type) {
  // Look for a `fromJson` factory that takes a JSON-able type
  if (type is InterfaceType) {
    final fromJsonCtor = type.constructors.singleWhereOrNull(
      (element) => element.name == fromJsonFactoryName,
    );
    if (fromJsonCtor != null) {
      final requiredParams = fromJsonCtor.parameters
          .where((element) => element.isRequiredPositional)
          .toList();
      if (requiredParams.length == 1) {
        final paramType = requiredParams.single.type;
        if (_validJsonType(paramType, false)) {
          return (jsonType: paramType, paramType: type);
        }
      }
    }
  }

  if (_validJsonType(type, false)) {
    return (jsonType: type, paramType: null);
  }
  return null;
}