# node-zip-streamer

> Add ReadStream support for .zip-files (uncompressed or deflate) to node

Latest version **2.0.0** (published 2022-11-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install node-zip-streamer
pnpm add node-zip-streamer
yarn add node-zip-streamer
bun add node-zip-streamer
```

## Health

**Score 35/100 (D)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2022-11-24 |
| First published | 2018-02-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 59 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Jan Hoffmann |
| Maintainers | das-mensch |
| Keywords | zip, deflate, readable, stream, inflate |

## Links

- npm: https://www.npmjs.com/package/node-zip-streamer
- Repository: https://github.com/das-mensch/node-zip-stream
- Homepage: https://github.com/das-mensch/node-zip-stream#readme
- Issues: https://github.com/das-mensch/node-zip-stream/issues
- npm.io page: https://npm.io/package/node-zip-streamer

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2022-11-24
- 1.0.4 — 2019-04-05
- 1.0.3 — 2019-03-29
- 1.0.2 — 2018-06-08
- 1.0.1 — 2018-02-12
- 1.0.0 — 2018-02-12

## README

# node-zip-streamer
Add zip-file streaming possibility

This is the implementation of a very simple ZipStreamReader. Whenever you are facing the situation to read multiple files from a given zip file this simple stream will help you.

Now with ZIP64 support.

## Installation
```npm i node-zip-streamer```

## Usage
A simple example might be:
```typescript
import { ZipFileReadStream } from 'node-zip-streamer';
...
try {
  const zipStream = new ZipFileReadStream('some-file.zip');
  zipStream.on('data', file => {
    console.log(`File ${file.metaInfo.fileName} has content '${file.content.toString()}'.`);
  });
  zipStream.on('end', () => {
    console.log('Reading finished');
  });
} catch (err) {
  console.error(err);
}

// You might want to prefilter the files (new in 1.0.4)
// via RegEx...
const zipStream = new ZipFileReadStream(
  'some-file.zip',
  { filter: /by-regex/ }
);
// via exact file name...
const zipStream = new ZipFileReadStream(
  'some-file.zip',
  { filter: 'exact-match.txt' }
);
// via your own custom function (should return boolean true to mark a match)...
const zipStream = new ZipFileReadStream(
  'some-file.zip',
  { filter: (fileName) => fileName.startsWith('a') }
);
```

## Notice
- Please be aware of that the data event will give you the file contents as a buffer. You might want to use **toString(encoding)** to get the contents.
- You should not stream zip archives containing big files through this stream as it will get the contents on a per file basis, but multiple little files should work quite fine.
- Multipart zip archives are not supported

## Changes
### 2.0.0
- Added typescript support (finally)

### 1.0.4
- Added possibility to pre-filter files by function, regex or string

### 1.0.3
- Fixed error while reading Zip64-Records due to wrong usage of readUint

### 1.0.2
- Fixed error due to checking on the wrong extraField length attribute. (offset was wrong when cdRecord extrafield-length had a different value than in the localfile-header)
- Added ZIP64 support. Archives with file count > 65535 are now possible to be extracted.

---
_Source: https://npm.io/package/node-zip-streamer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
