/** * Form Validation System * * Provides a flexible validation system with built-in validators and custom validator support. * Validators can be chained using pipe syntax and support both sync and async validation. * * @example Basic usage * ```javascript * // Register custom validator * Gyos.validator('username', (value) => { * return value.length >= 3 || 'Username must be at least 3 characters'; * }); * * // Validate with rules * const error = await Gyos.validate(value, 'required|email|minLength(5)'); * if (error) { * console.log(error); // "Invalid email address" * } * ``` * * @example Async validator * ```javascript * Gyos.validator('uniqueEmail', async (value) => { * const exists = await checkEmailExists(value); * return !exists || 'Email already taken'; * }); * ``` * * @example In component * ```javascript * Gyos.scope('LoginForm', { * email: '', * emailError: '', * * async validateEmail() { * this.emailError = await Gyos.validate(this.email, 'required|email'); * } * }); * ``` */ import { ValidatorFn } from "../types"; export interface ValidationContext { field?: string; form?: Record; messages?: Record; } /** * Register a custom validator * * @param name - Validator name * @param fn - Validator function (return true for valid, string for error message) * * @example * ```javascript * Gyos.validator('even', (value) => { * return value % 2 === 0 || 'Must be an even number'; * }); * ``` */ export declare function validator(name: string, fn: ValidatorFn): void; /** * Get registered validator by name * * @param name - Validator name * @returns Validator function or undefined */ export declare function getValidator(name: string): ValidatorFn | undefined; /** * Get all registered validator names * * @returns Array of validator names * * @example * ```javascript * console.log('Available validators:', Gyos.getValidatorNames()); * // ['required', 'email', 'minLength', ...] * ``` */ export declare function getValidatorNames(): string[]; /** * Validate a value against validation rules * * Supports custom error messages in two ways: * 1. Inline: "required:Custom message|email:Invalid email" * 2. Via context: { messages: { required: "Custom message" } } * * @param value - Value to validate * @param rules - Validation rules (pipe-separated: "required|email|minLength(5)") * @param context - Optional context with form data and custom messages * @returns Error message or null if valid * * @example Basic validation * ```javascript * const error = await Gyos.validate('test@', 'required|email'); * // Returns: "Invalid email address" * ``` * * @example Inline custom messages * ```javascript * const error = await Gyos.validate('', 'required:This field is mandatory|email:Enter valid email'); * // Returns: "This field is mandatory" * ``` * * @example Custom messages via context * ```javascript * const error = await Gyos.validate('abc', 'required|minLength(5)', { * messages: { * required: 'Please fill this field', * minLength: 'Too short! Need at least 5 characters' * } * }); * // Returns: "Too short! Need at least 5 characters" * ``` * * @example With form context * ```javascript * const error = await Gyos.validate(confirmPw, 'required|same(password)', { * form: { password: 'MyPass123' }, * messages: { same: 'Passwords do not match' } * }); * ``` */ export declare function validate(value: any, rules: string, context?: ValidationContext): Promise; //# sourceMappingURL=validator.d.ts.map