@mmstack/form-validation
Version:
This is an internal library for providing localized validators :)
50 lines (49 loc) • 2.19 kB
TypeScript
import { Validator } from '../validator.type';
import { createIntegerValidator } from './integer';
import { createIsNumberValidator } from './is-number';
import { createMaxValidator } from './max';
import { createMinValidator } from './min';
import { createMultipleOfValidator } from './multiple-of';
export type NumberMessageFactories = {
min: Parameters<typeof createMinValidator>[0];
max: Parameters<typeof createMaxValidator>[0];
isNumber: Parameters<typeof createIsNumberValidator>[0];
multipleOf: Parameters<typeof createMultipleOfValidator>[0];
integer: Parameters<typeof createIntegerValidator>[0];
};
export type NumberValidatorOptions = {
min?: number;
max?: number;
integer?: boolean;
multipleOf?: number;
required?: boolean;
mustBe?: number | null;
not?: number | null;
oneOf?: (number | null)[];
notOneOf?: (number | null)[];
};
export declare function createNumberValidators(factories?: Partial<NumberMessageFactories>, 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: NumberValidatorOptions) => ((value: number | null) => string) & {
resolve: (mergedError: string) => {
error: string;
tooltip: string;
};
};
min: (min: number) => Validator<number | null>;
max: (max: number) => Validator<number | null>;
isNumber: () => Validator<number | null>;
multipleOf: (multipleOf: number) => Validator<number | null>;
integer: () => Validator<number | null>;
};