t-readable
v0.1.0
Published
Split a readable-stream into 2 or more readable-streams
Downloads
261
Maintainers
Readme
t-readable
Split one readable stream into multiple readable streams.
Installation
Using npm:
npm install t-readable
or yarn:
yan add t-readable
Usage
const { tee } = require('t-readable');
const got = require('got');
const url = 'https://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg';
/**
* Counts the number of bytes in the givent stream
* @param readable {stream.Readable} - Readable stream
* @return {Promise<number>} - Number of bytes until the end of stream is reached
*/
async function countBytes(readable) {
let bytesRead = 0;
return new Promise((resolve, reject) => {
readable.on('data', chunk => {
bytesRead += chunk.length;
});
readable.on('end', () => {
resolve(bytesRead);
});
readable.on('error', error => {
reject(error);
});
});
}
(async () => {
const stream = got.stream(url); // stream is an instance of class stream.Readable
const teedStreams = tee(stream);
// Count the number of bytes received in each teed stream
const counts = await Promise.all(teedStreams.map(readable => countBytes(readable)));
console.log('Counts: ' + counts.join(', ')); // Counts: 27661, 27661
})();