Skip to content

Commit 49beb4b

Browse files
author
Andy
authored
merge2: Fix compile error, clean up types (DefinitelyTyped#19207)
1 parent 048b0b6 commit 49beb4b

File tree

1 file changed

+45
-35
lines changed

1 file changed

+45
-35
lines changed

types/merge2/index.d.ts

Lines changed: 45 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,6 @@
66

77
/// <reference types="node" />
88

9-
import { DuplexOptions } from 'stream';
10-
11-
type StreamType = NodeJS.ReadableStream | Merge2Stream;
12-
13-
interface Merge2Stream extends NodeJS.ReadWriteStream {
14-
/**
15-
* @summary Add more streams to an existing merged stream
16-
*
17-
* @param {...(StreamType|StreamType[])} args streams to add
18-
*
19-
* @return The merged stream
20-
*/
21-
add(...args: Array<StreamType | StreamType[]>): Merge2Stream;
22-
23-
/**
24-
* @summary It will emit 'queueDrain' when all streams merged.
25-
* If you set end === false in options, this event give you a notice that
26-
* you should add more streams to merge, or end the mergedStream.
27-
*
28-
* @param {string} event The 'queueDrain' event
29-
*
30-
* @return This stream
31-
*/
32-
on(event: 'queueDrain', listener: () => void): this;
33-
on(event: string, listener: (...args: any[]) => void): this;
34-
35-
once(event: 'queueDrain', listener: () => void): this;
36-
once(event: string, listener: (...args: any[]) => void): this;
37-
}
38-
399
/**
4010
* @summary This function takes an arbitrary number of streams and returns a
4111
* Merge2Stream.
@@ -45,13 +15,53 @@ interface Merge2Stream extends NodeJS.ReadWriteStream {
4515
*
4616
* @see { @link https://github.com/teambition/merge2#api }
4717
*
48-
* @param {...(StreamType|StreamType[])} args StreamTypes
49-
* @param {DuplexOptions} opts Optional DuplexOption to be specified last
18+
* @param args StreamTypes
19+
* @param opts Optional DuplexOption to be specified last
5020
*
5121
* @return A merged duplex stream
5222
*/
53-
declare function IMerge2(...args: Array<StreamType | StreamType[] | DuplexOptions>): Merge2Stream;
23+
declare function merge2(a: Streams, options?: merge2.Options): merge2.Merge2Stream;
24+
declare function merge2(a: Streams, b: Streams, options?: merge2.Options): merge2.Merge2Stream;
25+
declare function merge2(a: Streams, b: Streams, c: Streams, options?: merge2.Options): merge2.Merge2Stream;
26+
declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, options?: merge2.Options): merge2.Merge2Stream;
27+
declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, e: Streams, options?: merge2.Options): merge2.Merge2Stream;
28+
declare function merge2(...args: Streams[]): merge2.Merge2Stream;
29+
30+
type Streams = merge2.StreamType | merge2.StreamType[];
31+
32+
declare namespace merge2 {
33+
type StreamType = NodeJS.ReadableStream | Merge2Stream;
5434

55-
declare namespace IMerge2 {}
35+
interface Options {
36+
end?: boolean;
37+
objectMode?: boolean;
38+
}
39+
40+
interface Merge2Stream extends NodeJS.ReadWriteStream {
41+
/**
42+
* @summary Add more streams to an existing merged stream
43+
*
44+
* @param args streams to add
45+
*
46+
* @return The merged stream
47+
*/
48+
add(...args: Streams[]): Merge2Stream;
49+
50+
/**
51+
* @summary It will emit 'queueDrain' when all streams merged.
52+
* If you set end === false in options, this event give you a notice that
53+
* you should add more streams to merge, or end the mergedStream.
54+
*
55+
* @param {string} event The 'queueDrain' event
56+
*
57+
* @return This stream
58+
*/
59+
on(event: 'queueDrain', listener: () => void): this;
60+
on(event: string, listener: (...args: any[]) => void): this;
61+
62+
once(event: 'queueDrain', listener: () => void): this;
63+
once(event: string, listener: (...args: any[]) => void): this;
64+
}
65+
}
5666

57-
export = IMerge2;
67+
export = merge2;

0 commit comments

Comments
 (0)