- Major performance improvements to the compiled validation pipeline
- Inline type-checks for simple leaf schemas (string, optional string, nullable string) eliminating closure call overhead
- Flatten nested pure objects into a single closure with direct map traversal
- Capture error reporter directly in compiled closures, removing virtual dispatch
- Benchmarks: Flat Object 18M ops/s (+3x), Nested Object 9.5M ops/s (+4x), Array Object 12M ops/s (+3x)
- Keep vine rules accross many validations
- Rename
ValidationExceptionclass toVineValidationExceptionto prevent collision withValidationExceptionclass from another packages - Change
ValidationException.messagefromStringtoMap<String, dynamic>
- Rename
Fieldclass toVineField - Rename
ValidatorContextclass toVineValidatorContextto prevent collision withValidatorContextclass from another packages
- Rename
ErrorReportertoVineErrorReporterto prevent collision withErrorReporterclass from anither packages - Change error reporting strategy from
.toString()tojson.encode()
- Add
schema.clone()method to return a new instance ofVineSchema
- Add
schema.example()method to decorate OpenApi reporter
- Change
Map<String, dynamic>entry data todynamicintryValidate
- Added support for all schemas as a high-level entry schema
- Add benchmarks in
Dartmarkwebsite
- Add
RegExpproperty in phone validation rule
- Add missing
VineNotSameAsRuleimplementation - Implement
VineRegexRulevalidation rule - Add related Dev.to article
- Move rules from handlers to dedicated classes
- Implement OpenAPI reporter
- Implement
VineBasicsvalidation rules - Implement
VineGroupvalidation rules - Implement
VineDatevalidation rules - Optimize validation algorithm
- Enhance performance of the library,
~22 000 000->~29 500 000ops/sec (+34%)
Initial release
- Implement the basic functionality of the library
- Add the core validation rules
- Add the core validation functions
- Add the core validation exceptions
- Write tests for the core functionality
VineAnyanyVineArrayarrayVineBooleanbooleanVineNumbernumberVineObjectobjectVineStringstringVineEnumenumVineUnionunion