@azlib/validator
v0.2.1
Published
Dependency-light validation rules, assertions, and string normalization helpers.
Readme
Validator
Dependency-light validation rules, assertions, and string normalization helpers.
Capabilities
- Extensive collection of string/value predicates (email, URL, JWT, UUID, date, IP address, credit cards, etc.)
- Normalization and sanitization tools (trim, escape HTML, blacklist/whitelist characters, email lowercasing)
- Structured rule executor (
validateValue,assertValid) throwing descriptiveValidationErroron failure - Monolithic frozen
validatorobject exporting all package utilities on a single import surface
AI Agent Quick Reference
Core Exports
| Export | Type | Description |
| --- | --- | --- |
| validateValue<V>(val: V, rules: ValidatorRule[]): ValidationResult | Function | Runs validation checklist against target value. Returns result status list. |
| assertValid<V>(val: V, rules: ValidatorRule[]): ValidationResult | Function | Runs checks. Throws ValidationError if validation fails. |
| createRule<V>(code: string, test: (...) => boolean, msg?: string): ValidatorRule | Function | Instantiates a custom reusable validation rule. |
| validator | Object | Frozen namespace exposing all validation predicates and sanitizers. |
| ValidationError | Class | Custom error throwing on validation failures. |
Core Types
ValidatorRule<V>:code: stringmessage?: stringtest: (context: ValidatorRuleContext<V>) => boolean
ValidationResult<V>:value: VnormalizedValue: stringisValid: booleanissues: ValidationIssue[](where issue hascode: stringand optionalmessage?: string)
Common Validation Rules
import { assertValid, createRule, isEmail, isPresent } from "@azlib/validator";
const required = createRule("required", ({ normalizedValue }) => isPresent(normalizedValue), "Value is required");
const email = createRule("email", ({ value }) => isEmail(value), "Must be an email address");
// Throws ValidationError if rules fail
assertValid("[email protected]", [required, email]);Validator Facade
For codebases that prefer a single namespace import instead of named function imports:
import { validator } from "@azlib/validator";
const isURL = validator.isURL("https://google.com");
const booled = validator.toBoolean("1"); // true
const safeHtml = validator.escapeHtml("<script>"); // "<script>"Behavioral Gotchas
- Coercion Defaults: Calling
normalizeValidationValue(or checking predicates) withnullorundefinednormalizes values into an empty string""by default, rather than throwing type errors. - Email Normalizer:
normalizeEmaillowercase transforms local parts and domains by default, and trims Gmail sub-addresses (e.g.[email protected]->[email protected]). - No Heavy Dependencies: Unlike libraries such as Zod, this package is designed for fast, dependency-light string parsing and formatting assertions, and does not require complex object schema compiling.
