diff --git a/lib/src/json_schema/formats/idn_email_validator.dart b/lib/src/json_schema/formats/idn_email_validator.dart index 3d73a8a2..b0ba1308 100644 --- a/lib/src/json_schema/formats/idn_email_validator.dart +++ b/lib/src/json_schema/formats/idn_email_validator.dart @@ -1,7 +1,9 @@ import 'package:json_schema/src/json_schema/models/validation_context.dart'; +import 'package:rfc_6531/rfc_6531.dart' as rfc_6531; ValidationContext defaultIdnEmailValidator(ValidationContext context, String instanceData) { - // No maintained dart packages exist to validate RFC6531, - // and it's too complex for a regex, so best effort is to pass for now. + if (rfc_6531.regExp.firstMatch(instanceData) == null) { + context.addError('"idn-email" format not accepted $instanceData'); + } return context; } diff --git a/pubspec.yaml b/pubspec.yaml index 9054b3f1..4589a0b7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: collection: ^1.15.0 http: ">=0.13.4 <2.0.0" logging: ^1.0.0 + rfc_6531: ^1.0.0 rfc_6901: '>=0.1.0 <0.3.0' uri: '>=0.11.1 <2.0.0'