1 |
|
2 |
|
3 |
|
4 |
|
5 | type ExtractType<I> = I extends { [Symbol.iterator]: () => Iterator<any, infer TReturn, any> } ? TReturn
|
6 | : I extends (...args: any[]) => any ? ReturnType<I>
|
7 | : I;
|
8 |
|
9 | interface Co {
|
10 | <F extends (...args: any[]) => Iterator<any, any, any>>(fn: F, ...args: Parameters<F>): Promise<
|
11 | ExtractType<ReturnType<F>>
|
12 | >;
|
13 | default: Co;
|
14 | co: Co;
|
15 | wrap: <F extends (...args: any[]) => Iterator<any, any, any>>(
|
16 | fn: F,
|
17 | ) => (...args: Parameters<F>) => Promise<ExtractType<ReturnType<F>>>;
|
18 | }
|
19 |
|
20 | declare const co: Co;
|
21 |
|
22 | export = co;
|