/// import { Readable, ReadableOptions } from 'stream'; /** * Sandwich Options that will configure parsed data */ export interface SandwichOptions extends ReadableOptions { readonly head?: string | Buffer; readonly tail?: string | Buffer; readonly separator?: string | Buffer; } /** * Handles Readable streams requests as concatenation through data handling as * well adding tags it each begin, end and between of the streams */ export declare class SandwichStream extends Readable { private streamsActive; private streams; private newStreams; private head; private tail; private separator; private currentStream; /** * Initiates the SandwichStream, you can consider it also passing * ReadableOptions to it * * @param head Pushes this content before all other content * @param tail Pushes this content after all other data has been pushed * @param separator Pushes this content between each stream * @param remaining The other kind of options to be passed to Readable * @example * const ss = new SandwichStream({ * head: 'This at the top\n', * tail: '\nThis at the bottom', * separator: '\n --- \n' * }); */ constructor({ head, tail, separator, ...remaining }: SandwichOptions); /** * Add a new Readable stream in the queue * * @param newStream The Readable stream * @example * sandwichStream.add(streamOne); * sandwichStream.add(streamTwo); * sandwichStream.add(streamThree); * @throws An Error in case that this request was not accepted * @returns This instance of Sandwich Stream */ add(newStream: Readable): this; /** * Works in a similar way from the Readable read, only that this one checks * for whether or not a stream is already being handled * @returns This instance of Sandwich Stream */ _read(): void; /** * Binds an error thrown from one of the streams being handled * * @param err Error to be bind * @returns This instance of Sandwich Stream */ private subStreamOnError; /** * Fetches the next stream to be handled * @returns This instance of Sandwich Stream */ private streamNextStream; /** * Verifies whether or not the stream queue has ended * @returns This instance of Sandwich Stream */ private nextStream; /** * Once the current stream starts to pass their data, this handles it in a * less complicated way * @returns This instance of Sandwich Stream */ private bindCurrentStreamEvents; /** * Handles the data from a current stream once they are being streamed * @returns This instance of Sandwich Stream */ private currentStreamOnReadable; /** * Handles the tagging once a stream is finished * @returns This instance of Sandwich Stream */ private currentStreamOnEnd; /** * Adds the head tag to the Sandwich Stream * @returns This instance of Sandwich Stream */ private pushHead; /** * Adds the separator tag to the Sandwich Stream * @returns This instance of Sandwich Stream */ private pushSeparator; /** * Adds the tail tag to the Sandwich Stream * @returns This instance of Sandwich Stream */ private pushTail; } export default SandwichStream; //# sourceMappingURL=sandwich-stream.d.ts.map