UNPKG

@codelet/core

Version:
12 lines (11 loc) 580 B
export type PromisifySuccessResult<P, T extends { success?: (...args: any[]) => void; }> = P extends { success: any; } ? void : P extends { fail: any; } ? void : P extends { complete: any; } ? void : Promise<Parameters<Exclude<T['success'], undefined>>[0]>; export type PromisifyRestArgs<T> = T extends [any, ...args: infer P] ? P : never[]; export declare function promisify<T extends (...args: any[]) => any>(fn: T): <P extends Parameters<T>[0]>(options?: P | undefined, ...args: PromisifyRestArgs<Parameters<T>>) => PromisifySuccessResult<P, Parameters<T>[0]>;