silentium-validation
v0.0.7
Published
Validation library based on silentium
Maintainers
Readme
A reactive validation library built on the Silentium library for TypeScript applications. Provides asynchronous and reactive validation capabilities with a simple, composable API.
Features
- Reactive validation with asynchronous support
- Composable validation rules
- TypeScript-first design
- Built-in common validation rules
- Integration with Silentium reactive primitives
Installation
npm install silentium-validationBasic Usage
Validation Rules
Create validation items with rules:
import { Required, Integer } from 'silentium-validation';
const form = {
email: '',
password: '',
};
const rules = {
email: [Required, (v) => /\S+@\S+\.\S+/.test(v) || 'Invalid email'],
password: [Required]
}
const $validationItems = Computed(ValidationItems, form, rules);Custom Rules
Define custom validation rules:
const MinLength = (min: number) => (value: string) =>
value.length >= min || `Must be at least ${min} characters`;
const form = {
username: '',
age: 0,
password: '',
};
const rules = {
password: [MinLength(8)]
}
const $validationItems = Computed(ValidationItems, form, rules);Running Validation
Use ValidationErrors to get validation results:
import { ValidationErrors } from 'silentium-validation';
const $errors = ValidationErrors($validationItems);
const errors = await $errors;
// Result: { username: [], age: [], password: ['Must be at least 8 characters'] }Checking Validation Status
Use Validated to check if form is valid:
import { Validated, Computed, LateShared } from 'silentium';
import { Validated } from 'silentium-validation';
const $errors = LateShared(errors);
const $isValid = Computed(Validated, $errors);
const isValid = await $isValid; // false if any errors existAPI Reference
Types
type ValidationErrorType = Record<string, string[]>;
interface ValidationItem {
value: unknown;
key: string;
rules: ConstructorType<any, ValidationRule>[];
}
type ValidationRule = MaybeMessage<string | boolean>;Functions
ValidationErrors(items: ValidationItem[])
Returns a MessageType<ValidationErrorType> containing all validation errors.
Validated(errors: ValidationErrorType)
Returns true if no validation errors exist, false otherwise.
Built-in Rules
Required
Validates that a value is truthy.
Required(value) // Returns true or "Field required"Integer
Validates that a value is an integer.
Integer(value) // Returns true or "Must be integer"Advanced Usage
Reactive Validation
Combine with Silentium's reactive primitives for real-time validation:
import { Computed, LateShared } from 'silentium';
import { ValidationErrors, Validated } from 'silentium-validation';
const $form = LateShared({
email: '',
password: '',
});
const $validationItems = Computed(ValidationItems, $form, {
email: [Required, (v) => /\S+@\S+\.\S+/.test(v) || 'Invalid email'],
password: [Required, MinLength(8)]
});
const $errors = ValidationErrors($validationItems);
const $isValid = Computed(Validated, $errors);
// Reactively update validation as form data changes
$form.use({ email: '[email protected]', password: 'newpassword' });License
MIT
