diff --git a/CHANGELOG.md b/CHANGELOG.md index 4441d48..8426524 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.0.4 + +- Make serializer const +- Add asOptional getter on ValueValidator +- Add optional getter on Map + ## 0.0.3 - Add generic Serializer model diff --git a/lib/src/serialization/serializer.dart b/lib/src/serialization/serializer.dart index c82c2b6..d654650 100644 --- a/lib/src/serialization/serializer.dart +++ b/lib/src/serialization/serializer.dart @@ -4,7 +4,7 @@ import "package:dart_iconica_utilities/src/value_validator/value_validator.dart" /// class Serializer { /// - Serializer({ + const Serializer({ required this.fromMap, required this.toMap, this.validators = const {}, @@ -15,7 +15,7 @@ class Serializer { /// factory Serializer.readOnly({ required Map Function(T object) toMap, - required Map validators, + required SerializedObjectValidator validators, List fieldPaths = const [], Map? data, }) => @@ -30,7 +30,7 @@ class Serializer { /// factory Serializer.writeOnly({ required T Function(Map map) fromMap, - required Map validators, + required SerializedObjectValidator validators, List fieldPaths = const [], Map? data, }) => @@ -43,7 +43,7 @@ class Serializer { ); /// - final Map validators; + final SerializedObjectValidator validators; /// final T Function(Map map) fromMap; diff --git a/lib/src/value_validator/extension.dart b/lib/src/value_validator/extension.dart index 268c30b..7b8733a 100644 --- a/lib/src/value_validator/extension.dart +++ b/lib/src/value_validator/extension.dart @@ -2,7 +2,7 @@ import "package:dart_iconica_utilities/src/value_validator/exception.dart"; import "package:dart_iconica_utilities/src/value_validator/models.dart"; /// -extension MapValidator on Map { +extension MapValidator on SerializedObjectValidator { /// void validate(Map toValidate) { try { @@ -31,7 +31,7 @@ extension MapValidator on Map { } /// -extension ValidatorJsonRepresentation on Map { +extension ValidatorJsonRepresentation on SerializedObjectValidator { /// Map asJson() => map( (key, value) => MapEntry( diff --git a/lib/src/value_validator/models.dart b/lib/src/value_validator/models.dart index 1a9f983..c530559 100644 --- a/lib/src/value_validator/models.dart +++ b/lib/src/value_validator/models.dart @@ -14,7 +14,7 @@ class ValueValidator { ValueValidator.map({ this.optional = false, CustomValidator? validator, - Map validators = const {}, + SerializedObjectValidator validators = const {}, }) { jsonRepresentation = validators.asJson(); this.validator = (value) { @@ -215,8 +215,25 @@ class ValueValidator { return validator(value); } + + /// + ValueValidator get asOptional => ValueValidator( + optional: true, + validator: validator, + jsonRepresentation: jsonRepresentation, + ); } /// // ignore: avoid_annotating_with_dynamic typedef CustomValidator = dynamic Function(dynamic value); + +/// +typedef SerializedObjectValidator = Map; + +/// +extension OptionalObjectValidator on SerializedObjectValidator { + /// + SerializedObjectValidator get optional => + map((key, value) => MapEntry(key, value.asOptional)); +} diff --git a/pubspec.yaml b/pubspec.yaml index 8970d57..14bb397 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: dart_iconica_utilities description: Useful utilities for dart projects -version: 0.0.3 +version: 0.0.4 homepage: https://iconica.app