| | |
| | | value?: T; |
| | | length?: number; |
| | | }; |
| | | export declare type MockableFunction = (...args: Array<any>) => any; |
| | | export declare type MethodKeysOf<T> = { |
| | | [K in keyof T]: T[K] extends MockableFunction ? K : never; |
| | | }[keyof T]; |
| | | export declare type PropertyKeysOf<T> = { |
| | | [K in keyof T]: T[K] extends MockableFunction ? never : K; |
| | | }[keyof T]; |
| | | export declare type ArgumentsOf<T> = T extends (...args: infer A) => any ? A : never; |
| | | export declare type ConstructorArgumentsOf<T> = T extends new (...args: infer A) => any ? A : never; |
| | | export declare type MaybeMockedConstructor<T> = T extends new (...args: Array<any>) => infer R ? MockInstance<R, ConstructorArgumentsOf<T>> : T; |
| | | export declare type MockedFunction<T extends MockableFunction> = MockWithArgs<T> & { |
| | | [K in keyof T]: T[K]; |
| | | }; |
| | | export declare type MockedFunctionDeep<T extends MockableFunction> = MockWithArgs<T> & MockedObjectDeep<T>; |
| | | export declare type MockedObject<T> = MaybeMockedConstructor<T> & { |
| | | [K in MethodKeysOf<T>]: T[K] extends MockableFunction ? MockedFunction<T[K]> : T[K]; |
| | | } & { |
| | | [K in PropertyKeysOf<T>]: T[K]; |
| | | }; |
| | | export declare type MockedObjectDeep<T> = MaybeMockedConstructor<T> & { |
| | | [K in MethodKeysOf<T>]: T[K] extends MockableFunction ? MockedFunctionDeep<T[K]> : T[K]; |
| | | } & { |
| | | [K in PropertyKeysOf<T>]: MaybeMockedDeep<T[K]>; |
| | | }; |
| | | export declare type MaybeMockedDeep<T> = T extends MockableFunction ? MockedFunctionDeep<T> : T extends object ? MockedObjectDeep<T> : T; |
| | | export declare type MaybeMocked<T> = T extends MockableFunction ? MockedFunction<T> : T extends object ? MockedObject<T> : T; |
| | | export declare type ArgsType<T> = T extends (...args: infer A) => any ? A : never; |
| | | export declare type Mocked<T> = { |
| | | [P in keyof T]: T[P] extends (...args: Array<any>) => any ? MockInstance<ReturnType<T[P]>, ArgsType<T[P]>> : T[P] extends Constructable ? MockedClass<T[P]> : T[P]; |
| | | } & T; |
| | | export declare type MockedClass<T extends Constructable> = MockInstance<InstanceType<T>, T extends new (...args: infer P) => any ? P : never> & { |
| | | prototype: T extends { |
| | | prototype: any; |
| | | } ? Mocked<T['prototype']> : never; |
| | | } & T; |
| | | export interface Constructable { |
| | | new (...args: Array<any>): any; |
| | | } |
| | | export interface MockWithArgs<T extends MockableFunction> extends MockInstance<ReturnType<T>, ArgumentsOf<T>> { |
| | | new (...args: ConstructorArgumentsOf<T>): T; |
| | | (...args: ArgumentsOf<T>): ReturnType<T>; |
| | | } |
| | | export interface Mock<T, Y extends Array<unknown> = Array<unknown>> extends Function, MockInstance<T, Y> { |
| | | new (...args: Y): T; |
| | | (...args: Y): T; |
| | |
| | | instances: Array<T>; |
| | | invocationCallOrder: Array<number>; |
| | | /** |
| | | * Getter for retrieving the last call arguments |
| | | */ |
| | | lastCall?: Y; |
| | | /** |
| | | * List of results of calls to the mock function. |
| | | */ |
| | | results: Array<MockFunctionResult>; |
| | |
| | | resetAllMocks(): void; |
| | | restoreAllMocks(): void; |
| | | private _typeOf; |
| | | mocked<T>(item: T, deep?: false): MaybeMocked<T>; |
| | | mocked<T>(item: T, deep: true): MaybeMockedDeep<T>; |
| | | } |
| | | export declare const fn: <T, Y extends unknown[]>(implementation?: ((...args: Y) => T) | undefined) => Mock<T, Y>; |
| | | export declare const spyOn: { |
| | |
| | | <T_2 extends {}, M_2 extends NonFunctionPropertyNames<T_2>>(object: T_2, methodName: M_2, accessType: 'set'): SpyInstance<void, [T_2[M_2]]>; |
| | | <T_4 extends {}, M_4 extends FunctionPropertyNames<T_4>>(object: T_4, methodName: M_4): T_4[M_4] extends (...args: Array<any>) => any ? SpyInstance<ReturnType<T_4[M_4]>, Parameters<T_4[M_4]>> : never; |
| | | }; |
| | | export declare const mocked: { |
| | | <T>(item: T, deep?: false | undefined): MaybeMocked<T>; |
| | | <T_2>(item: T_2, deep: true): MaybeMockedDeep<T_2>; |
| | | }; |
| | | export {}; |