@bshg/validation
Version:
Validation Library for TypeScript projects
47 lines (46 loc) • 1.94 kB
TypeScript
import { ValidatorResult } from "../results";
import { ValidatorItem } from "./validator-item";
import { BatchValidatorResultInfo, ExtractNonPrimitiveKeys, NestedType, ValidatorConfig, ValidatorOptions, ValidatorResultInfo } from "../utils";
type ValidatorItemsType<T extends Record<string, any>> = {
[K in keyof T]?: ValidatorItem<T[K], T>;
};
type ValidatorStatus<T extends Record<string, any>> = {
field?: Extract<ExtractNonPrimitiveKeys<T>, string>;
valid?: boolean;
message?: string;
};
export declare class Validator<T extends Record<string, any>, TContext extends Record<string, any> = any> {
#private;
context?: TContext;
onChangeEvent?: (obj: T) => void;
status: ValidatorStatus<T>;
config(config: ValidatorConfig<T, TContext>): this;
get nested(): NestedType<T, TContext>;
get items(): ValidatorItemsType<T>;
options(value: ValidatorOptions): this;
allGood(): boolean;
applyAll(): void;
applyAllAsync(): Promise<void>;
reset(): void;
init(getter: () => T): this;
withContext(context: TContext): this;
private generateErrorsAsObject;
private generateErrorsAsArray;
private generateErrors;
validate(data?: T): boolean;
validateAsync(data?: T): Promise<boolean>;
validateInfo(data?: T): ValidatorResultInfo;
validateInfoAsync(data?: T): Promise<ValidatorResultInfo>;
validateThrow(data?: T): void;
validateThrowAsync(data?: T): Promise<void>;
batchValidate(...data: T[]): BatchValidatorResultInfo;
batchValidateAsync(...data: T[]): Promise<BatchValidatorResultInfo>;
batchValidateThrow(...data: T[]): void;
batchValidateThrowAsync(...data: T[]): Promise<void>;
import(results: ValidatorResult): void;
onChange(event: (obj: T) => void): this;
validateItem(key: keyof T): void;
isItemValid(key: keyof T): boolean | undefined;
itemMessage(key: keyof T): string | undefined;
}
export {};