UNPKG

@ordojs/forms

Version:

Comprehensive form handling system for OrdoJS

103 lines 4.26 kB
/** * Comprehensive validation system with schema integration */ import type { BaseValidationSchema, FieldError, FieldValue, FieldValues, JoiSchema, ValidationRule, YupSchema, ZodSchema } from './types.js'; /** * Built-in validation rules */ export declare class ValidationRules { static required(message?: string): ValidationRule; static minLength(min: number, message?: string): ValidationRule; static maxLength(max: number, message?: string): ValidationRule; static min(min: number, message?: string): ValidationRule; static max(max: number, message?: string): ValidationRule; static email(message?: string): ValidationRule; static url(message?: string): ValidationRule; static pattern(regex: RegExp, message?: string): ValidationRule; static oneOf(options: FieldValue[], message?: string): ValidationRule; static custom(validator: (value: FieldValue, formValues?: FieldValues) => boolean | Promise<boolean>, message?: string): ValidationRule; static asyncCustom(validator: (value: FieldValue, formValues?: FieldValues) => Promise<boolean>, message?: string): Promise<ValidationRule>; static equalTo(fieldName: string, message?: string): ValidationRule; static date(message?: string): ValidationRule; static file(options?: { maxSize?: number; allowedTypes?: string[]; message?: string; }): ValidationRule; } /** * Schema adapter for Zod integration */ export declare class ZodSchemaAdapter implements BaseValidationSchema { private schema; constructor(schema: ZodSchema); validate(values: FieldValues): Promise<Record<string, FieldError>>; validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>; } /** * Schema adapter for Yup integration */ export declare class YupSchemaAdapter implements BaseValidationSchema { private schema; constructor(schema: YupSchema); validate(values: FieldValues): Promise<Record<string, FieldError>>; validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>; } /** * Schema adapter for Joi integration */ export declare class JoiSchemaAdapter implements BaseValidationSchema { private schema; constructor(schema: JoiSchema); validate(values: FieldValues): Promise<Record<string, FieldError>>; validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>; } /** * Validation manager for handling different validation scenarios */ export declare class ValidationManager { private static instance; private customValidators; static getInstance(): ValidationManager; /** * Register a custom validator globally */ registerValidator(name: string, rule: ValidationRule): void; /** * Get a registered validator */ getValidator(name: string): ValidationRule | undefined; /** * Create schema adapter from different schema types */ createSchemaAdapter(schema: any): BaseValidationSchema; /** * Validate a single field with multiple rules */ validateField(value: FieldValue, rules: ValidationRule[], formValues?: FieldValues): Promise<FieldError | null>; /** * Combine multiple validation rules */ combineRules(...rules: ValidationRule[]): ValidationRule[]; /** * Create conditional validation rule */ when(condition: (formValues: FieldValues) => boolean, thenRule: ValidationRule, elseRule?: ValidationRule): ValidationRule; } /** * Utility functions for validation */ export declare const validation: { rules: typeof ValidationRules; manager: ValidationManager; createZodAdapter: (schema: ZodSchema) => ZodSchemaAdapter; createYupAdapter: (schema: YupSchema) => YupSchemaAdapter; createJoiAdapter: (schema: JoiSchema) => JoiSchemaAdapter; email: () => ValidationRule; required: () => ValidationRule; minLength: (min: number) => ValidationRule; maxLength: (max: number) => ValidationRule; pattern: (regex: RegExp, message?: string) => ValidationRule; async: (validator: (value: FieldValue, formValues?: FieldValues) => Promise<boolean>, message: string) => ValidationRule; }; //# sourceMappingURL=validation.d.ts.map