
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
Turn a writable and readable stream into a streams2 duplex stream with support for async initialization and streams1/streams2 input
Turn a writeable and readable stream into a single streams2 duplex stream.
Similar to duplexer2 except it supports both streams2 and streams1 as input
and it allows you to set the readable and writable part asynchronously using setReadable(stream) and setWritable(stream)
npm install duplexify
Use duplexify(writable, readable, streamOptions) (or duplexify.obj(writable, readable) to create an object stream)
var duplexify = require('duplexify')
// turn writableStream and readableStream into a single duplex stream
var dup = duplexify(writableStream, readableStream)
dup.write('hello world') // will write to writableStream
dup.on('data', function(data) {
// will read from readableStream
})
You can also set the readable and writable parts asynchronously
var dup = duplexify()
dup.write('hello world') // write will buffer until the writable
// part has been set
// wait a bit ...
dup.setReadable(readableStream)
// maybe wait some more?
dup.setWritable(writableStream)
If you call setReadable or setWritable multiple times it will unregister the previous readable/writable stream.
To disable the readable or writable part call setReadable or setWritable with null.
If the readable or writable streams emits an error or close it will destroy both streams and bubble up the event.
You can also explicitly destroy the streams by calling dup.destroy(). The destroy method optionally takes an
error object as argument, in which case the error is emitted as part of the error event.
dup.on('error', function(err) {
console.log('readable or writable emitted an error - close will follow')
})
dup.on('close', function() {
console.log('the duplex stream is destroyed')
})
dup.destroy() // calls destroy on the readable and writable part (if present)
Turn a node core http request into a duplex stream is as easy as
var duplexify = require('duplexify')
var http = require('http')
var request = function(opts) {
var req = http.request(opts)
var dup = duplexify(req)
req.on('response', function(res) {
dup.setReadable(res)
})
return dup
}
var req = request({
method: 'GET',
host: 'www.google.com',
port: 80
})
req.end()
req.pipe(process.stdout)
MIT
duplexify is part of the mississippi stream utility collection which includes more useful stream modules similar to this one.
Through2 is a tiny wrapper around Node streams.Transform, making it easier to create transform streams. It is similar to duplexify in that it helps with stream manipulation, but it focuses more on transforming data rather than combining separate readable and writable streams.
Pumpify combines an array of streams into a single duplex stream using pump and duplexify under the hood. It is similar to duplexify but is specifically designed to create a pipeline of streams that can be treated as a single duplex stream.
From2 is a high-level module for creating readable streams that properly handle backpressure. While it does not combine streams into a duplex stream like duplexify, it provides a simple interface for creating readable streams from functions.
Stream-combiner2 turns a pipeline of streams (readable, transform, and writable) into a single duplex stream. It is similar to duplexify but is more focused on combining streams into a pipeline rather than just pairing a readable with a writable stream.
FAQs
Turn a writable and readable stream into a streams2 duplex stream with support for async initialization and streams1/streams2 input
The npm package duplexify receives a total of 18,406,777 weekly downloads. As such, duplexify popularity was classified as popular.
We found that duplexify demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.