eskemaStrict function
- Map<
String, IValidator> schema
Returns a Validator that checks a value against a Map eskema and fails if
any keys exist in the map that are not defined in the schema
.
Example:
final validator = eskemaStrict({ 'name': isString() });
validator.validate({ 'name': 'test' }); // valid
validator.validate({ 'name': 'test', 'age': 25 }); // invalid
Implementation
IValidator eskemaStrict(Map<String, IValidator> schema) {
return eskema(schema) &
Validator((value) {
final map = value as Map<String, dynamic>;
final unknownKeys = map.keys.where((key) => !schema.containsKey(key)).toList();
if (unknownKeys.isEmpty) {
return Result.valid(value);
}
return Result.invalid(
value,
expectations: [
Expectation(message: 'has unknown keys: ${unknownKeys.join(', ')}', value: value, code: 'structure.unknown_key', data: {'keys': unknownKeys})
],
);
});
}