UNPKG

2.63 kBTypeScriptView Raw
1// Type definitions for merge2 1.3
2// Project: https://github.com/teambition/merge2
3// Definitions by: Tanguy Krotoff <https://github.com/tkrotoff>
4// Chigozirim C. <https://github.com/smac89>
5// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
6
7/// <reference types="node" />
8
9import { PassThrough } from 'stream';
10
11/**
12 * @summary This function takes an arbitrary number of streams and returns a
13 * Merge2Stream.
14 *
15 * @description If a DuplexOption is specified, it has to be specified last in the
16 * argument list
17 *
18 * @see { @link https://github.com/teambition/merge2#api }
19 *
20 * @param args StreamTypes
21 * @param opts Optional DuplexOption to be specified last
22 *
23 * @return A merged duplex stream
24 */
25declare function merge2(a: Streams, options?: merge2.Options): merge2.Merge2Stream;
26declare function merge2(a: Streams, b: Streams, options?: merge2.Options): merge2.Merge2Stream;
27declare function merge2(a: Streams, b: Streams, c: Streams, options?: merge2.Options): merge2.Merge2Stream;
28declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, options?: merge2.Options): merge2.Merge2Stream;
29declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, e: Streams, options?: merge2.Options): merge2.Merge2Stream;
30declare function merge2(...args: Streams[]): merge2.Merge2Stream;
31
32type Streams = merge2.StreamType | merge2.StreamType[];
33
34declare namespace merge2 {
35 type StreamType = NodeJS.ReadableStream | Merge2Stream;
36
37 interface Options {
38 end?: boolean;
39 objectMode?: boolean;
40 }
41
42 interface Merge2Stream extends PassThrough {
43 /**
44 * @summary Add more streams to an existing merged stream
45 *
46 * @param args streams to add
47 *
48 * @return The merged stream
49 */
50 add(...args: Streams[]): Merge2Stream;
51
52 /**
53 * @summary It will emit 'queueDrain' when all streams merged.
54 * If you set end === false in options, this event give you a notice that
55 * you should add more streams to merge, or end the mergedStream.
56 *
57 * @param event The 'queueDrain' event
58 *
59 * @return This stream
60 */
61 on(event: 'queueDrain', listener: () => void): this;
62 on(event: string, listener: (...args: any[]) => void): this;
63
64 once(event: 'queueDrain', listener: () => void): this;
65 once(event: string, listener: (...args: any[]) => void): this;
66 }
67}
68
69export = merge2;