yauzl
yauzl copied to clipboard
Allow decompress option for non-deflate compressed entries
PR for #80.
Currently it is not possible to extract the raw compressed data for entries compressed with a method other than 8 (Deflate).
If you try to open a read stream for an entry compressed with e.g. Deflate64:
- with option
decompress: false
, you get error "options.decompress can only be specified for compressed entries" - with no
decompress
option, you get error "unsupported compression method: 9"
This PR alters the treatment of the decompress
option in .openReadStream()
so you can pass option decompress: false
and get a stream of the compressed data.
Ideally, I think it'd be better to implement this by altering entry.isCompressed()
to use entry.compressionMethod !== 0
. But isCompressed()
is part of the public API, so that would be a semver-major change. This PR as it stands would (I think) not.
Thanks for writing up this PR. I'm inspired to take this seriously, and I've started working on this in a branch (wip). Getting the code working is pretty trivial, as you've demonstrated, but I want to be careful about how this changes the openReadStream
API.
I'm not happy with how complicated things are getting in the docs and the code wrt what cases are allowed and not. I'm considering some kind of api simplification that just asks for the raw data and ignores the compression method and encryption scheme and all that. :thinking: I'll continue working on this tomorrow or sometime soon.
See #82