combined-stream

This commit is contained in:
Tomek Łaziuk
2017-02-11 10:32:58 +01:00
parent a01e02004b
commit 2ef80bcc93
4 changed files with 107 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
import * as CombinedStream from "combined-stream";
import { createReadStream, createWriteStream } from "fs";
const stream1 = new CombinedStream();
stream1.append(createReadStream("tsconfig.json"));
stream1.append(createReadStream("tslint.json"));
stream1.append(createReadStream("index.d.ts"));
stream1.pipe(createWriteStream("combined.txt"));
const stream2 = CombinedStream.create({
maxDataSize: 1 << 32,
pauseStreams: false,
});
stream1.destroy();
// should log true
console.log(CombinedStream.isStreamLike(stream2));
stream2.on("data", (data) => {
console.log(data);
});
stream2.pipe(createWriteStream("combined.txt"));
stream2.write(CombinedStream.name);
stream2.destroy();

56
combined-stream/index.d.ts vendored Normal file
View File

@@ -0,0 +1,56 @@
// Type definitions for combined-stream 1.0
// Project: https://github.com/felixge/node-combined-stream
// Definitions by: Felix Geisendörfer <https://github.com/felixge>, Tomek Łaziuk <https://github.com/tlaziuk>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { Stream } from "stream";
declare class CombinedStream extends Stream implements CombinedStream.Options {
readonly writable: boolean;
readonly readable: boolean;
readonly dataSize: number;
maxDataSize: number;
pauseStreams: boolean;
append(stream: NodeJS.ReadableStream | NodeJS.WritableStream | Buffer | string): this;
write(data: any): void;
pause(): void;
resume(): void;
end(): void;
destroy(): void;
// private properties
_released: boolean;
// @TODO it should be a type of Array<'delayed-stream' instance | Buffer | string>
_streams: Array<Stream | Buffer | string>;
_currentStream: Stream | Buffer | string | null;
_getNext(): void;
_pipeNext(): void;
_handleErrors(stream: NodeJS.EventEmitter): void;
_reset(): void;
_checkDataSize(): void;
_updateDataSize(): void;
_emitError(error: Error): void;
// events
on(event: "close" | "end" | "resume" | "pause", cb: () => void): this;
on(event: "error", cb: (err: Error) => void): this;
on(event: "data", cb: (data: any) => void): this;
once(event: "close" | "end" | "resume" | "pause", cb: () => void): this;
once(event: "error", cb: (err: Error) => void): this;
once(event: "data", cb: (data: any) => void): this;
}
declare namespace CombinedStream {
export interface Options {
maxDataSize?: number;
pauseStreams?: boolean;
}
export function create(options?: Options): CombinedStream;
export function isStreamLike(stream: any): stream is Stream;
}
export = CombinedStream;

View File

@@ -0,0 +1,20 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"combined-stream-tests.ts"
]
}

View File

@@ -0,0 +1 @@
{ "extends": "../tslint.json" }