+ Type checks with enumerated error codes + String format type checks + Array type checks + Type guards (x is Type) + Type assertions (assert x is Type and return; otherwise, throw) + Customizable error messages (`ErrorMessageService.Map = /*Custom error
npm install @anyhowstep/data-validation+ Type checks with enumerated error codes
+ String format type checks
+ Array type checks
+ Type guards (x is Type)
+ Type assertions (assert x is Type and return; otherwise, throw)
+ Customizable error messages (ErrorMessageService.Map = /Custom error code to error message format/;)
+ Promise-based API available
+ Performance is not a goal; we are stressing safety, and usability over performance.
While all type guards, and domain checks are synchronous, a promise-based API
may be desirable when wanting to validate a large number of conditions,
and using a final catch() to handle errors.