You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
846 B
32 lines
846 B
// @flow |
|
|
|
opaque type Next = Function | void; |
|
opaque type Yield = mixed; |
|
|
|
export type Gensync<Args, Return> = { |
|
(...args: Args): Handler<Return>, |
|
sync(...args: Args): Return, |
|
async(...args: Args): Promise<Return>, |
|
// ...args: [...Args, Callback] |
|
errback(...args: any[]): void, |
|
}; |
|
|
|
export type Handler<Return> = Generator<Yield, Return, Next>; |
|
export type Options<Args, Return> = { |
|
sync(...args: Args): Return, |
|
arity?: number, |
|
name?: string, |
|
} & ( |
|
| { async?: (...args: Args) => Promise<Return> } |
|
// ...args: [...Args, Callback] |
|
| { errback(...args: any[]): void } |
|
); |
|
|
|
declare module.exports: { |
|
<Args, Return>( |
|
Options<Args, Return> | ((...args: Args) => Handler<Return>) |
|
): Gensync<Args, Return>, |
|
|
|
all<Return>(Array<Handler<Return>>): Handler<Return[]>, |
|
race<Return>(Array<Handler<Return>>): Handler<Return>, |
|
};
|
|
|