Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mcollina/cloneable-readable
Clone a Readable stream, safely
https://github.com/mcollina/cloneable-readable
Last synced: 5 days ago
JSON representation
Clone a Readable stream, safely
- Host: GitHub
- URL: https://github.com/mcollina/cloneable-readable
- Owner: mcollina
- License: mit
- Created: 2016-04-26T08:16:11.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-02-12T09:11:01.000Z (10 months ago)
- Last Synced: 2024-10-29T18:08:01.174Z (about 1 month ago)
- Language: JavaScript
- Size: 53.7 KB
- Stars: 117
- Watchers: 5
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-nodejs - cloneable-readable - Clone a Readable stream, safely. (Repository / Streams)
- awesome-nodejs-streams - mcollina/cloneable-readable - Clone a Readable stream, safely (Modules)
README
# cloneable-readable
[![npm](https://img.shields.io/npm/v/cloneable-readable)](https://www.npmjs.com/package/cloneable-readable)Clone a Readable stream, safely.
```js
'use strict'var cloneable = require('cloneable-readable')
var fs = require('fs')
var pump = require('pump')var stream = cloneable(fs.createReadStream('./package.json'))
pump(stream.clone(), fs.createWriteStream('./out1'))
// simulate some asynchronicity
setImmediate(function () {
pump(stream, fs.createWriteStream('./out2'))
})
```**cloneable-readable** automatically handles `objectMode: true`.
This module comes out of an healthy discussion on the 'right' way to
clone a Readable in https://github.com/gulpjs/vinyl/issues/85
and https://github.com/nodejs/readable-stream/issues/202. This is my take.**YOU MUST PIPE ALL CLONES TO START THE FLOW**
You can also attach `'data'` and `'readable'` events to them.
## API
### cloneable(stream)
Create a `Cloneable` stream.
A Cloneable has a `clone()` method to create more clones.
All clones must be resumed/piped to start the flow.### cloneable.isCloneable(stream)
Check if `stream` needs to be wrapped in a `Cloneable` or not.
## Acknowledgements
This project was kindly sponsored by [nearForm](http://nearform.com).
## License
MIT