From 4979be62b8f8ee3ed7371f7d6e88f938342ad66f Mon Sep 17 00:00:00 2001 From: Kiril Tijsma Date: Tue, 10 Mar 2026 10:54:26 +0100 Subject: [PATCH 1/3] feat: make serializer const --- lib/src/serialization/serializer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/serialization/serializer.dart b/lib/src/serialization/serializer.dart index c82c2b6..96ba149 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 {}, From 584357d1d423bd5678aec196ef2ba966c5299cc5 Mon Sep 17 00:00:00 2001 From: Kiril Tijsma Date: Tue, 10 Mar 2026 10:54:55 +0100 Subject: [PATCH 2/3] feat: add optional versions of value validators --- lib/src/serialization/serializer.dart | 6 +++--- lib/src/value_validator/extension.dart | 4 ++-- lib/src/value_validator/models.dart | 19 ++++++++++++++++++- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/src/serialization/serializer.dart b/lib/src/serialization/serializer.dart index 96ba149..d654650 100644 --- a/lib/src/serialization/serializer.dart +++ b/lib/src/serialization/serializer.dart @@ -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)); +} From 18d364df73549df2e9cdf69c6954d3857a51cf3a Mon Sep 17 00:00:00 2001 From: Kiril Tijsma Date: Tue, 10 Mar 2026 10:57:30 +0100 Subject: [PATCH 3/3] chore: increment version to 0.0.4 --- CHANGELOG.md | 6 ++++++ pubspec.yaml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) 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/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