validateAll method
Implementation
@override
JarResult validateAll(Map<String, dynamic>? value,
[Map<String, dynamic>? allValues, String? path, Object? root]) {
final effectiveRoot = root ?? value;
final issues = <JarIssue>[];
issues.addAll(super
.validateAll(value, allValues ?? value, path, effectiveRoot)
.issues);
if (fields.isEmpty || value == null) {
return _aggregate(issues, value);
}
final ignoredFields = _ignoredFields ?? [];
if (!_allowExtra) {
final extraFields = value.keys
.where(
(key) => !fields.containsKey(key) && !ignoredFields.contains(key))
.toList();
if (extraFields.isNotEmpty) {
issues.add(JarIssue(
path: path,
code: 'unrecognized_keys',
message: 'Extra fields are not allowed: ${extraFields.join(", ")}'));
}
}
final output = <String, dynamic>{};
fields.forEach((key, fieldSchema) {
final childPath = path == null ? key : '$path.$key';
final fieldResult =
fieldSchema.validateAll(value[key], value, childPath, effectiveRoot);
output[key] = fieldResult.value;
issues.addAll(fieldResult.issues);
});
return _aggregate(issues, output);
}