mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-03 20:40:28 -05:00 
			
		
		
		
	
		
			
	
	
		
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# pump
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pump is a small node module that pipes streams together and destroys all of them if one of them closes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								npm install pump
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[](http://travis-ci.org/mafintosh/pump)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## What problem does it solve?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
							 | 
						||
| 
								 | 
							
								You are also not able to provide a callback to tell when then pipe has finished.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pump does these two things for you
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Simply pass the streams you want to pipe together to pump and add an optional callback
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``` js
							 | 
						||
| 
								 | 
							
								var pump = require('pump')
							 | 
						||
| 
								 | 
							
								var fs = require('fs')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var source = fs.createReadStream('/dev/random')
							 | 
						||
| 
								 | 
							
								var dest = fs.createWriteStream('/dev/null')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pump(source, dest, function(err) {
							 | 
						||
| 
								 | 
							
								  console.log('pipe finished', err)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								setTimeout(function() {
							 | 
						||
| 
								 | 
							
								  dest.destroy() // when dest is closed pump will destroy source
							 | 
						||
| 
								 | 
							
								}, 1000)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can use pump to pipe more than two streams together as well
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``` js
							 | 
						||
| 
								 | 
							
								var transform = someTransformStream()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								pump(source, transform, anotherTransform, dest, function(err) {
							 | 
						||
| 
								 | 
							
								  console.log('pipe finished', err)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Similarly to `stream.pipe()`, `pump()` returns the last stream passed in, so you can do:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								return pump(s1, s2) // returns s2
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you want to return a stream that combines *both* s1 and s2 to a single stream use
							 | 
						||
| 
								 | 
							
								[pumpify](https://github.com/mafintosh/pumpify) instead.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## License
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MIT
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Related
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`pump` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
							 |