{"_id":"@elraptorus/zippogryph","_rev":"2-d2f140016690af25100b6bc3ab2e9344","name":"@elraptorus/zippogryph","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@elraptorus/zippogryph","version":"1.0.0","keywords":["zip","node","typescript","extract-zip"],"author":{"name":"ElRaptorus"},"license":"MIT","_id":"@elraptorus/zippogryph@1.0.0","maintainers":[{"name":"elraptorus","email":"veritas-dolet@eclipso.de"}],"homepage":"https://github.com/ElRaptorus/zippogryph#readme","bugs":{"url":"https://github.com/ElRaptorus/zippogryph/issues"},"bin":{"zippogryph":"dist/cli.js","extract-zip":"dist/cli.js"},"dist":{"shasum":"02ae1855050c67d6f13bd1b71f1a7f7bcaba1f15","tarball":"https://registry.npmjs.org/@elraptorus/zippogryph/-/zippogryph-1.0.0.tgz","fileCount":43,"integrity":"sha512-yWaO/ke0S2OVRiWJ8yjvmT6Syr2ZPup2l+da4iPM9gMCdswDn2ZaTNkzBl6aKTMQcQ7l973PBaG3hvwIDcZ9nQ==","signatures":[{"sig":"MEQCIFRkoYEIzFWXOGoUjKRBFelPSxFFds4GLbnW+kM7/MvEAiBaqPMVKrdeS8dNJVmDJGZsJKXO+WmQuNs9xQLoWkWWpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78368},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"npm":">=12.0.0","node":">=22.12.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"bc397c02235adca9cc5142f01172f80bde1f4bd8","scripts":{"lint":"eslint src/ test/","test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","format":"prettier --write --config .prettierrc.json src test *.json *.md","lint:fix":"eslint --fix src/ test/","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","format:check":"prettier --check --config .prettierrc.json src test *.json *.md"},"_npmUser":{"name":"elraptorus","email":"veritas-dolet@eclipso.de"},"repository":{"url":"git+https://github.com/ElRaptorus/zippogryph.git","type":"git"},"_npmVersion":"12.0.2","description":"Lightweight extraction tool for zip archives.","directories":{},"_nodeVersion":"24.20.0","allowScripts":{"fsevents":false},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.9.1","vitest":"^4.1.11","globals":"^17.11.0","prettier":"^3.9.6","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^22.19.0","typescript-eslint":"^8.68.0","eslint-config-prettier":"^10.1.8"},"_npmOperationalInternal":{"tmp":"tmp/zippogryph_1.0.0_1788436943379_0.26388706247344595","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@elraptorus/zippogryph","version":"1.0.1","description":"Lightweight extraction tool for zip archives.","keywords":["zip","node","typescript","extract-zip"],"homepage":"https://github.com/ElRaptorus/zippogryph#readme","bugs":{"url":"https://github.com/ElRaptorus/zippogryph/issues"},"repository":{"type":"git","url":"git+https://github.com/ElRaptorus/zippogryph.git"},"license":"MIT","author":{"name":"ElRaptorus"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"bin":{"zippogryph":"dist/cli.js","extract-zip":"dist/cli.js"},"engines":{"node":">=22.12.0","npm":">=12.0.0"},"allowScripts":{"fsevents":false},"scripts":{"clean":"rm -rf dist","build":"npm run clean && tsc -p tsconfig.build.json","test":"vitest run","test:watch":"vitest","lint":"eslint src/ test/","lint:fix":"eslint --fix src/ test/","format":"prettier --write --config .prettierrc.json src test *.json *.md","format:check":"prettier --check --config .prettierrc.json src test *.json *.md","typecheck":"tsc --noEmit -p tsconfig.json"},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^22.19.0","eslint":"^10.9.1","eslint-config-prettier":"^10.1.8","globals":"^17.11.0","prettier":"^3.9.6","typescript":"^6.0.3","typescript-eslint":"^8.68.0","vitest":"^4.1.11"},"gitHead":"106863eaef8919fdb009bd4290c7cbf56c048ec6","_id":"@elraptorus/zippogryph@1.0.1","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-n4wIouiJxOn4v54mo8FYBCLeN3RJatS/P2bZo/uuPq/tf/qcHPUbtvFgO47vhzlfKemRnK85uQK6N8Lt8a89tw==","shasum":"29eda361e34796c35ffc440c85044ddfcdab6c2e","tarball":"https://registry.npmjs.org/@elraptorus/zippogryph/-/zippogryph-1.0.1.tgz","fileCount":43,"unpackedSize":84110,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF5XFVfLqTz/iQTXx00btJlhy7Z6z4MC7CKXsvy2998FAiA5/0XPHYCWeLLoh/YD755fhlGriky22m7lb8v1If418w=="}]},"_npmUser":{"name":"elraptorus","email":"veritas-dolet@eclipso.de"},"directories":{},"maintainers":[{"name":"elraptorus","email":"veritas-dolet@eclipso.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zippogryph_1.0.1_1788467189676_0.13761948477439456"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-03T12:02:23.115Z","modified":"2026-09-03T20:26:30.020Z","1.0.0":"2026-09-03T12:02:23.516Z","1.0.1":"2026-09-03T20:26:29.837Z"},"bugs":{"url":"https://github.com/ElRaptorus/zippogryph/issues"},"author":{"name":"ElRaptorus"},"license":"MIT","homepage":"https://github.com/ElRaptorus/zippogryph#readme","keywords":["zip","node","typescript","extract-zip"],"repository":{"type":"git","url":"git+https://github.com/ElRaptorus/zippogryph.git"},"description":"Lightweight extraction tool for zip archives.","maintainers":[{"name":"elraptorus","email":"veritas-dolet@eclipso.de"}],"readme":"# Zippogryph\n\nDrop-in replacement for [`extract-zip`](https://www.npmjs.com/package/extract-zip). It extracts ZIP archives, using only Node.js builtin libs. Zero external dependencies.\n\nShould work with all current LTS Versions of NodeJS. ESM and CommonJS supported.\n\nRequires Node.js `>=22.12.0`.\n\n## Why\n\n`extract-zip` has not been maintained for years and has security issues like [CVE-2026-19693](https://github.com/advisories/GHSA-7pqw-9j4j-h8q3). \\\nGot bored and thought a rewrite is more exciting than another fork.\nWho knows, maybe somebody will even find this useful.\n\n## Usage\n\n```bash\nnpm install @elraptorus/zippogryph\n```\n\nThe lib is available on `NPM` and via `GitHub Package` registry. Use whichever you prefer.\n\n> You could also create an override in your package.json to have extract-zip point here instead, but beware: **Danger, Will Robinson.**.\n\nYou can import and use it like this:\n\n```javascript\n// ESM\nimport extract from '@elraptorus/zippogryph';\n\n// CommonJS\nconst extract = require('@elraptorus/zippogryph');\n\nawait extract('/absolute/path/to/file.zip', { dir: '/absolute/path/to/dest' });\n```\n\n### CLI\n\nExamples:\n\n```bash\nnpx zippogryph foo.zip /path/to/target/dir\nnpx extract-zip foo.zip /path/to/target/dir\nnpx zippogryph --list foo.zip\nnpx zippogryph --strip 1 foo.zip /path/to/target/dir\nnpx zippogryph --no-overwrite foo.zip /path/to/target/dir\nnpx zippogryph --silent foo.zip /path/to/target/dir\n```\n\n- `/path/to/target/dir` must be an absolute path\n- If the target directory is omitted, the current working directory is used\n- `--strip N` drops N leading path components (like `tar --strip-components`)\n- `-n` / `--no-overwrite` leaves existing files unchanged\n- `-l` / `--list` prints sizes and paths without extracting\n- `-s` / `--silent` turns the progress report off\n\n### Options\n\n| Option            | Type                       | Default  | Description                                                                                                                                                                                                    |\n| ----------------- | -------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `dir`             | `string`                   | required | Absolute destination directory                                                                                                                                                                                 |\n| `defaultDirMode`  | `number`                   | `0o755`  | Directory mode when the zip does not set permissions                                                                                                                                                           |\n| `defaultFileMode` | `number`                   | `0o644`  | File mode when the zip does not set permissions                                                                                                                                                                |\n| `onEntry`         | `(entry, zipfile) => void` | —        | Called for each extracted zip entry (`__MACOSX/` is skipped). `zipfile.entryCount` is the number of extractable entries. `zipfile` is a small handle (`entryCount`, `isOpen`, `close`), not a yauzl `ZipFile`. |\n| `strip`           | `number`                   | `0`      | Number of leading path components to remove from each entry                                                                                                                                                    |\n| `noOverwrite`     | `boolean`                  | `false`  | Skip files and symlinks that already exist at the destination                                                                                                                                                  |\n\n### Things to be aware of\n\n- Entries under `__MACOSX/` are skipped\n- Compression methods `0` (STORE) and `8` (DEFLATE) are supported. May add more in the future.\n- The central directory is currently capped at 64 MiB\n- DEFLATE output is capped to the declared uncompressed size\n- CRC-32 check is always on\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}