@@ -4,39 +4,36 @@ let generatorId = 0
44
55export type CancellablePromise < T > = Promise < T > & { cancel ( ) : void }
66
7- export function flow < R > ( generator : ( ) => IterableIterator < any > ) : ( ) => CancellablePromise < R >
7+ export interface FlowIterator < T > {
8+ next ( value ?: any ) : IteratorResult < T > | Promise < IteratorResult < T > >
9+ return ?( value ?: any ) : IteratorResult < T > | Promise < IteratorResult < T > >
10+ throw ?( e ?: any ) : IteratorResult < T > | Promise < IteratorResult < T > >
11+ }
12+
13+ export function flow < R > ( generator : ( ) => FlowIterator < any > ) : ( ) => CancellablePromise < R >
814export function flow < A1 > (
9- generator : ( a1 : A1 ) => IterableIterator < any >
15+ generator : ( a1 : A1 ) => FlowIterator < any >
1016) : ( a1 : A1 ) => CancellablePromise < any > // Ideally we want to have R instead of Any, but cannot specify R without specifying A1 etc... 'any' as result is better then not specifying request args
1117export function flow < A1 , A2 > (
12- generator : ( a1 : A1 , a2 : A2 ) => IterableIterator < any >
18+ generator : ( a1 : A1 , a2 : A2 ) => FlowIterator < any >
1319) : ( a1 : A1 , a2 : A2 ) => CancellablePromise < any >
1420export function flow < A1 , A2 , A3 > (
15- generator : ( a1 : A1 , a2 : A2 , a3 : A3 ) => IterableIterator < any >
21+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 ) => FlowIterator < any >
1622) : ( a1 : A1 , a2 : A2 , a3 : A3 ) => CancellablePromise < any >
1723export function flow < A1 , A2 , A3 , A4 > (
18- generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 ) => IterableIterator < any >
24+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 ) => FlowIterator < any >
1925) : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 ) => CancellablePromise < any >
2026export function flow < A1 , A2 , A3 , A4 , A5 > (
21- generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 ) => IterableIterator < any >
27+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 ) => FlowIterator < any >
2228) : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 ) => CancellablePromise < any >
2329export function flow < A1 , A2 , A3 , A4 , A5 , A6 > (
24- generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 ) => IterableIterator < any >
30+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 ) => FlowIterator < any >
2531) : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 ) => CancellablePromise < any >
2632export function flow < A1 , A2 , A3 , A4 , A5 , A6 , A7 > (
27- generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 ) => IterableIterator < any >
33+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 ) => FlowIterator < any >
2834) : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 ) => CancellablePromise < any >
2935export function flow < A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > (
30- generator : (
31- a1 : A1 ,
32- a2 : A2 ,
33- a3 : A3 ,
34- a4 : A4 ,
35- a5 : A5 ,
36- a6 : A6 ,
37- a7 : A7 ,
38- a8 : A8
39- ) => IterableIterator < any >
36+ generator : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 , a8 : A8 ) => FlowIterator < any >
4037) : ( a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 , a8 : A8 ) => CancellablePromise < any >
4138export function flow ( generator : Function ) {
4239 if ( arguments . length !== 1 )
0 commit comments