UNPKG

@v4fire/client

Version:

V4Fire client core library

95 lines (76 loc) 2.12 kB
/*! * V4Fire Client Core * https://github.com/V4Fire/Client * * Released under the MIT license * https://github.com/V4Fire/Client/blob/master/LICENSE */ import type { UnsafeIData } from 'super/i-data/i-data'; import type iInput from 'super/i-input/i-input'; export interface ValidatorMsgFn { (err: ValidatorResult): string; } /** * An error message to show a user. * It can be passed as a simple string, a dictionary of strings where the keys represent error names or a * function that takes an error object and returns a string. */ export type ValidatorMsg = Nullable< string | Dictionary<string> | ValidatorMsgFn >; export interface ValidatorParams extends Dictionary { /** * Error message to show a user */ msg?: ValidatorMsg; /** * Should show or not to show an error message to a user */ showMsg?: boolean; } export interface CustomValidatorParams<P extends ValidatorParams = any> extends ValidatorParams { /** * A custom validator function */ validator: CustomValidator<P>; } type CustomValidator<P> = (params: P) => unknown; export interface ValidatorError<E = unknown> extends Dictionary { name: string; value?: E; params?: Dictionary; } export type ValidatorResult<E = unknown> = boolean | null | ValidatorError<E>; export interface ValidationError<E = unknown> { validator: string; error: ValidatorError<E>; msg?: string; } export type ValidationResult<E = unknown> = boolean | ValidationError<E>; export type Validators = Array< string | Dictionary<ValidatorParams> | [string, ValidatorParams] >; export type ValidatorsDecl<CTX extends iInput = any, P extends ValidatorParams = any> = Dictionary< Validator<CTX, P> >; type Validator<CTX, P> = (this: CTX, params: P) => CanPromise<ValidatorResult>; export type Value = unknown; export type FormValue = Value; // @ts-ignore (extend) export interface UnsafeIInput<CTX extends iInput = iInput> extends UnsafeIData<CTX> { // @ts-ignore (access) attrs: CTX['attrs']; // @ts-ignore (access) resolveValue: CTX['resolveValue']; // @ts-ignore (access) normalizeAttrs: CTX['normalizeAttrs']; }