ruler-factory
Version:
A flexible, chainable validation rule factory for typeScript/javaScript.
53 lines (51 loc) • 3.79 kB
text/typescript
type RulerFactoryMessage = string | (() => string);
type RulerFactoryValidator = (value: any) => undefined | Error;
type RulerFactoryGenerator<R, P> = (validator: RulerFactoryValidator, params?: P) => R;
type RulerContext<R, P, E> = Omit<{
rules: R[];
addRule: (validator: RulerFactoryValidator, params?: P) => RulerContext<R, P, E>;
generator: RulerFactoryGenerator<R, P>;
getMessage: (message: RulerFactoryMessage) => string;
type: string;
string: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
number: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
array: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
boolean: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
object: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
symbol: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
bigint: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
null: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
undefined: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
true: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
false: (message?: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
length: (v: number, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
min: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
max: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
regex: (v: RegExp, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
required: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
startsWith: (v: string, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
endsWith: (v: string, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
includes: (v: string, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
uppercase: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
lowercase: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
email: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
gt: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
gte: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
lt: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
lte: (v: number | bigint, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
positive: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
negative: (message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
is: (v: (value: any) => boolean, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
not: (v: (value: any) => boolean, message: RulerFactoryMessage, params?: P) => RulerContext<R, P, E>;
done: () => R[];
transformer: (value: any) => any;
transform: (v: (value: any) => any) => void;
trim: () => RulerContext<R, P, E>;
shouldTrim: boolean;
toLowerCase: () => RulerContext<R, P, E>;
shouldToLowerCase: boolean;
toUpperCase: () => RulerContext<R, P, E>;
shouldToUpperCase: boolean;
}, keyof E> & E;
declare function rulerFactory<R, P = R, E extends Record<string, any> = {}>(generator: RulerFactoryGenerator<R, P>, extend?: (ctx: RulerContext<R, P, E>) => E): () => RulerContext<R, P, E>;
export { type RulerContext, type RulerFactoryGenerator, type RulerFactoryMessage, type RulerFactoryValidator, rulerFactory };