in lib/src/dependency.dart [43:96]
Dependency? _fromJson(Object? data, String name) {
if (data is String || data == null) {
return _$HostedDependencyFromJson({'version': data});
}
if (data is Map) {
final matchedKeys =
data.keys.cast<String>().where((key) => key != 'version').toList();
if (data.isEmpty || (matchedKeys.isEmpty && data.containsKey('version'))) {
return _$HostedDependencyFromJson(data);
} else {
final firstUnrecognizedKey =
matchedKeys.firstWhereOrNull((k) => !_sourceKeys.contains(k));
return $checkedNew<Dependency>('Dependency', data, () {
if (firstUnrecognizedKey != null) {
throw UnrecognizedKeysException(
[firstUnrecognizedKey],
data,
_sourceKeys,
);
}
if (matchedKeys.length > 1) {
throw CheckedFromJsonException(
data,
matchedKeys[1],
'Dependency',
'A dependency may only have one source.',
);
}
final key = matchedKeys.single;
switch (key) {
case 'git':
return GitDependency.fromData(data[key]);
case 'path':
return PathDependency.fromData(data[key]);
case 'sdk':
return _$SdkDependencyFromJson(data);
case 'hosted':
final hosted = _$HostedDependencyFromJson(data);
hosted.hosted?._nameOfPackage = name;
return hosted;
}
throw StateError('There is a bug in pubspec_parse.');
});
}
}
// Not a String or a Map – return null so parent logic can throw proper error
return null;
}