bool _validJsonType()

in functions_framework_builder/lib/src/valid_json_utils.dart [20:49]


bool _validJsonType(DartType type, bool allowComplexMembers) {
  bool validCollectionMember(DartType memberType) {
    if (allowComplexMembers) {
      return memberType is DynamicType ||
          memberType.isDartCoreObject ||
          _validJsonReturnTypeCore(memberType) == JsonReturnKind.other;
    }
    return memberType is DynamicType || memberType.isDartCoreObject;
  }

  if (type.isDartCoreBool ||
      type.isDartCoreNum ||
      type.isDartCoreDouble ||
      type.isDartCoreInt ||
      type.isDartCoreString) {
    return true;
  }

  if (type is InterfaceType) {
    if (type.isDartCoreList) {
      final arg = type.typeArguments.single;
      return validCollectionMember(arg);
    } else if (type.isDartCoreMap) {
      final keyArg = type.typeArguments[0];
      final valueArg = type.typeArguments[1];
      return keyArg.isDartCoreString && validCollectionMember(valueArg);
    }
  }
  return false;
}