DefinitelyTyped/types/merge2/index.d.ts
2017-10-22 15:22:50 -07:00

68 lines
2.5 KiB
TypeScript

// Type definitions for merge2 1.1
// Project: https://github.com/teambition/merge2
// Definitions by: Tanguy Krotoff <https://github.com/tkrotoff>
// Chigozirim C. <https://github.com/smac89>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
/**
* @summary This function takes an arbitrary number of streams and returns a
* Merge2Stream.
*
* @description If a DuplexOption is specified, it has to be specified last in the
* argument list
*
* @see { @link https://github.com/teambition/merge2#api }
*
* @param args StreamTypes
* @param opts Optional DuplexOption to be specified last
*
* @return A merged duplex stream
*/
declare function merge2(a: Streams, options?: merge2.Options): merge2.Merge2Stream;
declare function merge2(a: Streams, b: Streams, options?: merge2.Options): merge2.Merge2Stream;
declare function merge2(a: Streams, b: Streams, c: Streams, options?: merge2.Options): merge2.Merge2Stream;
declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, options?: merge2.Options): merge2.Merge2Stream;
declare function merge2(a: Streams, b: Streams, c: Streams, d: Streams, e: Streams, options?: merge2.Options): merge2.Merge2Stream;
declare function merge2(...args: Streams[]): merge2.Merge2Stream;
type Streams = merge2.StreamType | merge2.StreamType[];
declare namespace merge2 {
type StreamType = NodeJS.ReadableStream | Merge2Stream;
interface Options {
end?: boolean;
objectMode?: boolean;
}
interface Merge2Stream extends NodeJS.ReadWriteStream {
/**
* @summary Add more streams to an existing merged stream
*
* @param args streams to add
*
* @return The merged stream
*/
add(...args: Streams[]): Merge2Stream;
/**
* @summary It will emit 'queueDrain' when all streams merged.
* If you set end === false in options, this event give you a notice that
* you should add more streams to merge, or end the mergedStream.
*
* @param event The 'queueDrain' event
*
* @return This stream
*/
on(event: 'queueDrain', listener: () => void): this;
on(event: string, listener: (...args: any[]) => void): this;
once(event: 'queueDrain', listener: () => void): this;
once(event: string, listener: (...args: any[]) => void): this;
}
}
export = merge2;