dwww Home | Show directory contents | Find package

# duplexer3

> Modern version of `duplexer2`

## Install

```sh
npm install duplexer3
```

## Usage

```js
import stream from 'node:stream';
import duplexer from 'duplexer3';

const writable = new stream.Writable({objectMode: true});
const readable = new stream.Readable({objectMode: true});

writable._write = function (input, encoding, done) {
        if (readable.push(input)) {
                done();
        } else {
                readable.once('drain', done);
        }
};

readable._read = function () {
        // Noop
};

// Simulate the readable thing closing after a bit
writable.once('finish', () => {
        setTimeout(() => {
                readable.push(null);
        }, 500);
});

const duplex = duplexer3(writable, readable);

duplex.on('data', data => {
        console.log('got data', JSON.stringify(data));
});

duplex.on('finish', () => {
        console.log('got finish event');
});

duplex.on('end', () => {
        console.log('got end event');
});

duplex.write('oh, hi there', () => {
        console.log('finished writing');
});

duplex.end(() => {
        console.log('finished ending');
});
```

```
got data 'oh, hi there'
finished writing
got finish event
finished ending
got end event
```

## API

### duplexer(options?, writableStream, readableStream)

#### options

Type: `object`

##### bubbleErrors

Type: `boolean`\
Default: `true`

Whether to bubble errors from the underlying readable/writable streams.

Generated by dwww version 1.15 on Wed May 22 15:44:44 CEST 2024.