UNPKG

@qavajs/validation

Version:

Lib that transform plain english definition to validation functions

101 lines (100 loc) 8.6 kB
export declare class AssertionError extends Error { name: string; } export declare class SoftAssertionError extends AssertionError { name: string; } export type MatcherContext<Target> = { received: Target; isNot: boolean; isSoft: boolean; isPoll: boolean; formatMessage(received: any, expected: any, assert: string, isNot: boolean): string; asString(value: any): string; }; export type MatcherResult = { pass: boolean; message: string; }; type MatcherReturn = MatcherResult | Promise<MatcherResult>; type MatcherFn<Target = any, Args extends any[] = any[]> = (this: MatcherContext<Target>, ...rest: Args) => MatcherReturn; type MatcherMap = Record<string, MatcherFn>; export declare class Expect<Target, Matcher extends MatcherMap = {}> { received: Target; isSoft: boolean; isPoll: boolean; pollConfiguration: { timeout: number; interval: number; }; isNot: boolean; constructor(received: Target, configuration?: { soft?: boolean; poll?: boolean; not?: boolean; }); /** * Negates matcher */ get not(): this; /** * Enables soft matcher */ get soft(): this; get Error(): typeof AssertionError; poll({ timeout, interval }?: { timeout?: number; interval?: number; }): this; configure(options: { not?: boolean; soft?: boolean; poll?: boolean; timeout?: number; interval?: number; }): this; /** * Format error message * @param received * @param expected * @param assert * @param isNot */ formatMessage(received: any, expected: any, assert: string, isNot: boolean): string; asString(value: any): any; } export declare const expect: { <Target>(target: Target): Expect<Target, {}> & {}; extend<NewMatcher extends MatcherMap>(matchers: NewMatcher): { <Target>(target: Target): Expect<Target, {} & NewMatcher> & ({} & NewMatcher extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_1 extends MatcherMap>(matchers: NewMatcher_1): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1> & ({} & NewMatcher & NewMatcher_1 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_2 extends MatcherMap>(matchers: NewMatcher_2): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_3 extends MatcherMap>(matchers: NewMatcher_3): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_4 extends MatcherMap>(matchers: NewMatcher_4): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_5 extends MatcherMap>(matchers: NewMatcher_5): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_6 extends MatcherMap>(matchers: NewMatcher_6): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_7 extends MatcherMap>(matchers: NewMatcher_7): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_8 extends MatcherMap>(matchers: NewMatcher_8): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7 & NewMatcher_8> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7 & NewMatcher_8 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_9 extends MatcherMap>(matchers: NewMatcher_9): { <Target>(target: Target): Expect<Target, {} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7 & NewMatcher_8 & NewMatcher_9> & ({} & NewMatcher & NewMatcher_1 & NewMatcher_2 & NewMatcher_3 & NewMatcher_4 & NewMatcher_5 & NewMatcher_6 & NewMatcher_7 & NewMatcher_8 & NewMatcher_9 extends infer T ? { [Key in keyof T]: T[Key] extends MatcherFn<Target_1, infer Args extends any[]> ? (...expected: Args) => ReturnType<T[Key]> extends Promise<any> ? Promise<Expect<Target_1, T>> : Target_1 extends (...args: any) => any ? Promise<Expect<Target_1, T>> : Expect<Target_1, T> : never; } : never); extend<NewMatcher_10 extends MatcherMap>(matchers: NewMatcher_10): /*elided*/ any; }; }; }; }; }; }; }; }; }; }; }; export {};