You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Buffer and transform the n first bytes of a stream
Install
npm install first-chunk-stream
Usage
importfsfrom'node:fs';importgetStreamfrom'get-stream';importFirstChunkStreamfrom'first-chunk-stream';import{uint8ArrayToString}from'uint8array-extras';// unicorn.txt => unicorn rainbowconststream=fs.createReadStream('unicorn.txt').pipe(newFirstChunkStream({chunkSize: 7},async(chunk,encoding)=>{returnuint8ArrayToString(chunk).toUpperCase();}));constdata=awaitgetStream(stream);if(data.length<7){thrownewError('Couldn\'t get the minimum required first chunk length');}console.log(data);//=> 'UNICORN rainbow'
API
FirstChunkStream(options, transform)
FirstChunkStream constructor.
transform(chunk, encoding)
Type: Function
Async function that receives the required options.chunkSize bytes.
Expected to return an buffer-like object or string or object of form {buffer: Uint8Array, encoding: string} to send to stream or firstChunkStream.stop to end stream right away.
An error thrown from this function will be emitted as stream errors.
Note that the buffer can have a smaller length than the required one. In that case, it will be due to the fact that the complete stream contents has a length less than the options.chunkSize value. You should check for this yourself if you strictly depend on the length.
importFirstChunkStreamfrom'first-chunk-stream';newFirstChunkStream({chunkSize: 7},async(chunk,encoding)=>{returnchunk;// Send buffer to stream});newFirstChunkStream({chunkSize: 7},async(chunk,encoding)=>{return{buffer: chunk,encoding: encoding,};// Send buffer with encoding to stream});newFirstChunkStream({chunkSize: 7},async(chunk,encoding)=>{returnFirstChunkStream.stop;// End the stream early});newFirstChunkStream({chunkSize: 7},async(chunk,encoding)=>{thrownewError('Unconditional error');// Emit stream error});
options
Type: object
The options object is passed to the Duplex stream constructor allowing you to customize your stream behavior. In addition, you can specify the following option: