UNPKG

@mmstack/form-validation

Version:

This is an internal library for providing localized validators :)

59 lines (58 loc) 2.63 kB
import { Validator } from '../validator.type'; import { createEmailValidator } from './email'; import { createIsStringValidator } from './is-string'; import { createMaxLengthValidator } from './max-chars'; import { createMinLengthValidator } from './min-chars'; import { createPatternValidator } from './pattern'; import { createTrimmedValidator } from './trimmed'; import { createURIValidator } from './uri'; export type StringMessageFactories = { email: Parameters<typeof createEmailValidator>[0]; uri: Parameters<typeof createURIValidator>[0]; pattern: Parameters<typeof createPatternValidator>[0]; trimmed: Parameters<typeof createTrimmedValidator>[0]; isString: Parameters<typeof createIsStringValidator>[0]; minLength: Parameters<typeof createMinLengthValidator>[0]; maxLength: Parameters<typeof createMaxLengthValidator>[0]; }; export type StringValidatorOptions = { pattern?: RegExp | 'email' | 'uri' | Omit<string, 'email' | 'uri'>; trimmed?: boolean; minLength?: number; maxLength?: number; required?: boolean; mustBe?: string | null; not?: string | null; oneOf?: (string | null)[]; notOneOf?: (string | null)[]; messageOptions?: { label?: string; }; }; export declare function createStringValidators(factories?: Partial<StringMessageFactories>, generalValidators?: { required: <T>(label?: string) => Validator<T>; mustBe: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>; mustBeNull: <T>() => Validator<T>; not: <T>(value: T, valueLabel?: string, matcher?: (a: T, b: T) => boolean) => Validator<T>; oneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>; notOneOf: <T>(values: T[], toLabel?: (value: T) => string, identity?: (a: T) => string, delimiter?: string) => Validator<T>; }, merger?: <T>(validators: Validator<T>[]) => ((value: T) => string) & { resolve: (mergedError: string) => { error: string; tooltip: string; }; }): { all: (opt: StringValidatorOptions) => ((value: string | null) => string) & { resolve: (mergedError: string) => { error: string; tooltip: string; }; }; email: () => Validator<string | null>; uri: () => Validator<string | null>; pattern: (pattern: string | RegExp) => Validator<string | null>; trimmed: () => Validator<string | null>; isString: () => Validator<string | null>; minLength: (min: number) => Validator<string | null>; maxLength: (max: number) => Validator<string | null>; };