vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
28 lines (27 loc) • 1.72 kB
TypeScript
export type Types = 'string' | 'number' | 'boolean' | 'int' | 'float' | 'array' | 'object' | 'date' | 'url' | 'color' | 'email';
type Range = [number, number];
type ValidatorResult = boolean | string | Error | Promise<boolean | string | Error>;
export interface Rule<T = any> {
required?: boolean;
type?: Types;
length?: number;
range?: Range;
strict?: boolean;
enums?: T[];
message?: string;
validator?(value: T, model: Record<string, any>): ValidatorResult;
}
type TypeOptions = Pick<Rule, 'length' | 'range' | 'strict'>;
export declare function validate(rules: Rule | Rule[], value: unknown, model: Record<string, unknown>, validateAll?: boolean, defaultMsg?: string): Promise<string[]>;
export declare function validateRequirement(value: any): boolean;
export declare function validateEnumeration<T>(value: T | T[], options: T[]): boolean;
export declare function validateType(value: unknown, type: Types, options?: TypeOptions): boolean;
export declare function validateString(value: unknown, length?: number, range?: Range): boolean;
export declare function validateNumber(value: unknown, strict?: boolean, length?: number, range?: Range): boolean;
export declare function validateBoolean(value: unknown, strict?: boolean): boolean;
export declare function validateInt(value: unknown, strict?: boolean, length?: number, range?: Range): boolean;
export declare function validateFloat(value: unknown, strict?: boolean, length?: number, range?: Range): boolean;
export declare function validateDate(value: unknown, strict?: boolean): boolean;
export declare function validateUrl(value: unknown): boolean;
export declare function validateEmail(value: unknown): boolean;
export {};