@qavajs/validation
Version:
Lib that transform plain english definition to validation functions
101 lines (100 loc) • 8.6 kB
TypeScript
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 {};