UNPKG

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