diff --git a/__tests__/reader.test.ts b/__tests__/reader.test.ts index 9b4ffe4..633ccbf 100644 --- a/__tests__/reader.test.ts +++ b/__tests__/reader.test.ts @@ -214,6 +214,20 @@ describe( 'StreamReader', () => { } ) expect( chunks ).toEqual( defaultChunks ) } ) + + + it( 'doen\'t collect in-memory chunks when `inMemory` options is set to `false`', async () => { + const stream = new TransformStream() + const writer = stream.writable.getWriter() + const reader = new StreamReader( stream.readable, { inMemory: false } ) + + streamData( { writer } ) + + const dataRead = await reader.read() + + expect( dataRead ).toEqual( [] ) + + } ) } ) diff --git a/src/index.ts b/src/index.ts index 9cc7f94..b0ffcff 100644 --- a/src/index.ts +++ b/src/index.ts @@ -35,6 +35,8 @@ export class StreamReader extends EventEmitter + + private inMemory: Options[ 'inMemory' ] private transform: Options[ 'transform' ] @@ -46,6 +48,7 @@ export class StreamReader extends EventEmitter extends EventEmitter ) - - this.receivedChunks.push( processed ) + if ( this.inMemory ) { + this.receivedChunks.push( processed ) + } this.emit( 'data', processed ) } return ( diff --git a/src/types.ts b/src/types.ts index bbaffee..4d92848 100644 --- a/src/types.ts +++ b/src/types.ts @@ -27,6 +27,8 @@ export interface Options { /** A function that transforms a chunk of data. */ transform?: TransformChunk + /** Allows to opt-out from in-memory chunks collection. */ + inMemory?: boolean }