validate method

  1. @override
Future<ValidationResult<U>> validate(
  1. T value
)

Implementation

@override
Future<ValidationResult<U>> validate(T value) async {
  final futuristicInvalids = rules.map((e) async {
    final application = await e.apply(value);
    return application;
  }).toList();
  final invalids = (await Future.wait(futuristicInvalids.map((e) async => e)))
      .whereType<Invalid>()
      .toList();
  if (invalids.isNotEmpty) {
    return invalids.reduce((value, element) =>
            Invalid<U>(reasons: [...value.reasons, ...element.reasons]))
        as Invalid<U>;
  }

  return ValidationResult.valid();
}