@ordojs/forms
Version:
Comprehensive form handling system for OrdoJS
103 lines • 4.26 kB
TypeScript
/**
* 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