- Initial release
- Specification composition with builder functions and composition expression:
Spec.notEmpty
,Spec.inclusiveBetween
,spec { greaterThan }
, ... - Access controllers with builder functions and composition express:
Access.onlyUriFromBase
,Access.once
,access { revokable }
, ... - Access controller types:
ReadOnce
andDisposable
- Untrusted representation with
Untrust<_>
- Specification composition with builder functions and composition expression:
- Spec additions
startWith(Of)
to verify the header of astring
unique(Of)
to verify if a sequence has unique valuescreateModelWith
to run directly a "cross-world" function (a -> Result<'b, 'error>
) on the validated value- C# basic LINQ function (
Select
,SelectMany/Then
,Where
,Aggregate
,Zip
, ...) on theValidationResult<'T>
type together with aTraverse/Sequence
pair to run directly a series of validation functions on a sequence
- Type additions
BoundedInt
, an integer that is bound by a min/max thresholdNonEmptySeq<'T>
, a sequence that contains at least one elementUniqueSeq<'T>
, a sequence that only contains unique elementsXmlEncodedString
, astring
that can be considered a valid XML text (not neccessary a XML element)
- Spec additions
dependsOn
introduces dependent specifications to re-use and split complex specs into more maintainable building blocksalphabetical
,alphanum
, ... introduces a way to check a string for charaters only in the alphabeth
- Spec invariants: makes relationships between models more easy to describe
- Maybe: add optional type for better C# domain modeling
- Guard: add simple guard class for quick argument checking, but limit functionality to push users to use specifications instead
- Remove some unnecessary types to limit target projects
- Specifications with tagged errors; using words starting with
@
- Sanitization blocks for transformations before validation
Outcome
type for C# devs- Extra spec requirements:
containsAll
,seqEqual
,structure
...
- Provide
Union
to determine validation based on DU's - Provide
ErrorMessage
as a means to make more security-safe error messages - Provide asynchronous
WriteOnce
models - Provide
String
operations on specifications
- Update project towards .NET 6
- Add missing XML code docs on all specification types
- Fix implicit operator for C#
ValidationResult
with F#Result
type for easier interop
- Revert wrong renaming of C#-specific
Spec
- Update
Sanitize
for a more inclusive code base ♥ - Add sanitization composition expression