You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					61 lines
				
				1.9 KiB
			
		
		
			
		
	
	
					61 lines
				
				1.9 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								# minizlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A fast zlib stream built on [minipass](http://npm.im/minipass) and
							 | 
						||
| 
								 | 
							
								Node.js's zlib binding.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This module was created to serve the needs of
							 | 
						||
| 
								 | 
							
								[node-tar](http://npm.im/tar) and
							 | 
						||
| 
								 | 
							
								[minipass-fetch](http://npm.im/minipass-fetch).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Brotli is supported in versions of node with a Brotli binding.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## How does this differ from the streams in `require('zlib')`?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								First, there are no convenience methods to compress or decompress a
							 | 
						||
| 
								 | 
							
								buffer.  If you want those, use the built-in `zlib` module.  This is
							 | 
						||
| 
								 | 
							
								only streams.  That being said, Minipass streams to make it fairly easy to
							 | 
						||
| 
								 | 
							
								use as one-liners: `new zlib.Deflate().end(data).read()` will return the
							 | 
						||
| 
								 | 
							
								deflate compressed result.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This module compresses and decompresses the data as fast as you feed
							 | 
						||
| 
								 | 
							
								it in.  It is synchronous, and runs on the main process thread.  Zlib
							 | 
						||
| 
								 | 
							
								and Brotli operations can be high CPU, but they're very fast, and doing it
							 | 
						||
| 
								 | 
							
								this way means much less bookkeeping and artificial deferral.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Node's built in zlib streams are built on top of `stream.Transform`.
							 | 
						||
| 
								 | 
							
								They do the maximally safe thing with respect to consistent
							 | 
						||
| 
								 | 
							
								asynchrony, buffering, and backpressure.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								See [Minipass](http://npm.im/minipass) for more on the differences between
							 | 
						||
| 
								 | 
							
								Node.js core streams and Minipass streams, and the convenience methods
							 | 
						||
| 
								 | 
							
								provided by that class.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Classes
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- Deflate
							 | 
						||
| 
								 | 
							
								- Inflate
							 | 
						||
| 
								 | 
							
								- Gzip
							 | 
						||
| 
								 | 
							
								- Gunzip
							 | 
						||
| 
								 | 
							
								- DeflateRaw
							 | 
						||
| 
								 | 
							
								- InflateRaw
							 | 
						||
| 
								 | 
							
								- Unzip
							 | 
						||
| 
								 | 
							
								- BrotliCompress (Node v10 and higher)
							 | 
						||
| 
								 | 
							
								- BrotliDecompress (Node v10 and higher)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## USAGE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```js
							 | 
						||
| 
								 | 
							
								const zlib = require('minizlib')
							 | 
						||
| 
								 | 
							
								const input = sourceOfCompressedData()
							 | 
						||
| 
								 | 
							
								const decode = new zlib.BrotliDecompress()
							 | 
						||
| 
								 | 
							
								const output = whereToWriteTheDecodedData()
							 | 
						||
| 
								 | 
							
								input.pipe(decode).pipe(output)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## REPRODUCIBLE BUILDS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To create reproducible gzip compressed files across different operating
							 | 
						||
| 
								 | 
							
								systems, set `portable: true` in the options.  This causes minizlib to set
							 | 
						||
| 
								 | 
							
								the `OS` indicator in byte 9 of the extended gzip header to `0xFF` for
							 | 
						||
| 
								 | 
							
								'unknown'.
							 |