Skip to content

Commit fe46d37

Browse files
authored
Merge pull request mobxjs#1656 from dannsam/AsyncIteratorTypingsForFlow_mobx4
Update typings to allow flow to take async generators - async function*
2 parents 5eecede + 3281c13 commit fe46d37

1 file changed

Lines changed: 15 additions & 18 deletions

File tree

src/api/flow.ts

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,36 @@ let generatorId = 0
44

55
export 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>
814
export 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
1117
export 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>
1420
export 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>
1723
export 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>
2026
export 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>
2329
export 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>
2632
export 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>
2935
export 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>
4138
export function flow(generator: Function) {
4239
if (arguments.length !== 1)

0 commit comments

Comments
 (0)