{"id":46376079,"url":"https://github.com/fpsqdb/zip-lib","last_synced_at":"2026-03-05T05:07:56.515Z","repository":{"id":35162303,"uuid":"214467473","full_name":"fpsqdb/zip-lib","owner":"fpsqdb","description":"zip and unzip library for node","archived":false,"fork":false,"pushed_at":"2026-02-07T15:55:53.000Z","size":2410,"stargazers_count":40,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-07T22:59:01.986Z","etag":null,"topics":["nodejs","unzip","zip"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fpsqdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-10-11T15:13:24.000Z","updated_at":"2026-02-07T15:55:49.000Z","dependencies_parsed_at":"2024-02-19T03:31:11.313Z","dependency_job_id":"3901084f-039a-4f5c-bbd7-bd065786f16e","html_url":"https://github.com/fpsqdb/zip-lib","commit_stats":{"total_commits":99,"total_committers":1,"mean_commits":99.0,"dds":0.0,"last_synced_commit":"d9e247db365b169dd961e1b92f217cbac1567cca"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/fpsqdb/zip-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsqdb%2Fzip-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsqdb%2Fzip-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsqdb%2Fzip-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsqdb%2Fzip-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fpsqdb","download_url":"https://codeload.github.com/fpsqdb/zip-lib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fpsqdb%2Fzip-lib/sbom","scorecard":{"id":408566,"data":{"date":"2025-08-11","repo":{"name":"github.com/fpsqdb/zip-lib","commit":"e76c33b67ceac53f3a2fc6d697a1f4b0d115406a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/issue.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:6","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/issue.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/issue.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/fpsqdb/zip-lib/test.yml/master?enable=pin","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   3 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T22:00:41.833Z","repository_id":35162303,"created_at":"2025-08-18T22:00:41.833Z","updated_at":"2025-08-18T22:00:41.833Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30111728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nodejs","unzip","zip"],"created_at":"2026-03-05T05:07:56.095Z","updated_at":"2026-03-05T05:07:56.506Z","avatar_url":"https://github.com/fpsqdb.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# zip-lib\nzip and unzip library for node.\n\n[![npm Package](https://img.shields.io/npm/v/zip-lib.svg)](https://www.npmjs.org/package/zip-lib)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/fpsqdb/zip-lib/blob/master/LICENSE)\n![node](https://img.shields.io/node/v/zip-lib)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/fpsqdb/zip-lib/test.yml?branch=master)](https://github.com/fpsqdb/zip-lib/actions?query=workflow%3Atest)\n\n## Install\n\n```\nnpm install zip-lib\n```\n\n## Quick Start\n\n* [Zip](#Zip)\n    - [Zip single file](#zip-single-file)\n    - [Zip single folder](#zip-single-folder)\n* [Unzip](#unzip)\n* [Advanced usage](#advance-usage)\n    - [Sets the compression level](#sets-the-compression-level)\n    - [Zip multiple files and folders](#zip-multiple-files-and-folders)\n    - [Zip with metadata](#zip-with-metadata)\n    - [Unzip with entry callback](#unzip-with-entry-callback)\n    - [Unzip and exclude specified entries](#unzip-and-exclude-specified-entries)\n    - [Cancel zip](#cancel-zip)\n    - [Cancel unzip](#cancel-unzip)\n* [API](#api)\n    - Method: [archiveFile](#archivefile)\n    - Method: [archiveFolder](#archivefolder)\n    - Method: [extract](#extract)\n    - Class: [Zip](#class-zip)\n    - Class: [Unzip](#class-unzip)\n    - Options: [IZipOptions](#izipoptions)\n    - Options: [IExtractOptions](#iextractoptions)\n\n## Zip\nYou can use **zip-lib** to compress files or folders.\n\n### Zip single file\n\n```js\nconst zl = require(\"zip-lib\");\n\nzl.archiveFile(\"path/to/file.txt\", \"path/to/target.zip\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n### Zip single folder\n\n```js\nconst zl = require(\"zip-lib\");\n\nzl.archiveFolder(\"path/to/folder\", \"path/to/target.zip\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n## Unzip\n\n```js\nconst zl = require(\"zip-lib\");\n\nzl.extract(\"path/to/target.zip\", \"path/to/target\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n## Advanced usage\n\n### Sets the compression level\n\n```js\nconst zl = require(\"zip-lib\");\n\nzl.archiveFolder(\"path/to/folder\", \"path/to/target.zip\", { compressionLevel: 9 }).then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n### Zip multiple files and folders\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst zip = new zl.Zip();\n// Adds a file from the file system\nzip.addFile(\"path/to/file.txt\");\n// Adds a folder from the file system, putting its contents at the root of archive\nzip.addFolder(\"path/to/folder\");\n// Generate zip file.\nzip.archive(\"path/to/target.zip\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\nThe `path/to/folder` directory is as follows:\n\n```\npath/to/folder\n.\n├── dir1\n│   ├── file.ext\n├── dir2\n└── file_in_root.ext\n```\n\nAnd the generated `path/to/target.zip` archive file directory will be as follows:\n\n```\npath/to/target.zip\n.\n├── file.txt\n├── dir1\n│   ├── file.ext\n├── dir2\n└── file_in_root.ext\n```\n\n### Zip with metadata\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst zip = new zl.Zip();\n// Adds a file from the file system\nzip.addFile(\"path/to/file.txt\", \"renamedFile.txt\");\nzip.addFile(\"path/to/file2.txt\", \"folder/file.txt\");\n// Adds a folder from the file system, and naming it `new folder` within the archive\nzip.addFolder(\"path/to/folder\", \"new folder\");\n// Generate zip file.\nzip.archive(\"path/to/target.zip\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\nThe `path/to/folder` directory is as follows:\n\n```\npath/to/folder\n.\n├── dir1\n│   ├── file.ext\n├── dir2\n└── file_in_root.ext\n```\n\nAnd the generated `path/to/target.zip` archive file directory will be as follows:\n\n```\npath/to/target.zip\n.\n├── renamedFile.txt\n├── folder\n│   ├── file.txt\n│── new folder\n    ├── dir1\n    │   ├── file.ext\n    ├── dir2\n    └── file_in_root.ext\n```\n\n### Unzip with entry callback\nUsing `onEntry` callback we can know the current progress of extracting and control the extraction operation. See [IExtractOptions](#iextractoptions).\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst unzip = new zl.Unzip({\n    // Called before an item is extracted.\n    onEntry: function (event) {\n        console.log(event.entryCount, event.entryName);\n    }\n})\nunzip.extract(\"path/to/target.zip\", \"path/to/target\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n### Unzip and exclude specified entries\nThe following code shows how to exclude the `__MACOSX` folder in the zip file when extracting. See [IExtractOptions](#iextractoptions).\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst unzip = new zl.Unzip({\n    // Called before an item is extracted.\n    onEntry: function (event) {\n        if (/^__MACOSX\\//.test(event.entryName)) {\n            // entry name starts with __MACOSX/\n            event.preventDefault();\n        }\n    }\n})\nunzip.extract(\"path/to/target.zip\", \"path/to/target\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    console.log(err);\n});\n```\n\n### Cancel zip\nIf the `cancel` method is called after the archive is complete, nothing will happen.\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst zip = new zl.Zip();\nzip.addFile(\"path/to/file.txt\");\nzip.archive(\"path/to/target.zip\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    if (err.name === \"Canceled\") {\n        console.log(\"cancel\");\n    } else {\n        console.log(err);\n    }\n});\n\n// Cancel zip\nzip.cancel();\n```\n\n### Cancel unzip\nIf the `cancel` method is called after the extract is complete, nothing will happen.\n\n```js\nconst zl = require(\"zip-lib\");\n\nconst unzip = new zl.Unzip();\nunzip.extract(\"path/to/target.zip\", \"path/to/target\").then(function () {\n    console.log(\"done\");\n}, function (err) {\n    if (err.name === \"Canceled\") {\n        console.log(\"cancel\");\n    } else {\n        console.log(err);\n    }\n});\n\n// cancel\nunzip.cancel();\n```\n\n## API\n\n### Method: archiveFile \u003ca id=\"archivefile\"\u003e\u003c/a\u003e\n\n**archiveFile(file, zipFile, [options])**\n\nCompress a single file to zip.\n\n- `file`: String\n- `zipFile`: String\n- `options?`: [IZipOptions](#izipoptions) (optional)\n\nReturns: `Promise\u003cviod\u003e`\n\n### Method: archiveFolder \u003ca id=\"archivefolder\"\u003e\u003c/a\u003e\n\n**archiveFolder(folder, zipFile, [options])**\n\nCompress all the contents of the specified folder to zip.\n\n- `folder`: String\n- `zipFile`: String\n- `options?`: [IZipOptions](#izipoptions) (optional)\n\nReturns: `Promise\u003cvoid\u003e`\n\n### Method: extract \u003ca id=\"extract\"\u003e\u003c/a\u003e\n\n**extract(zipFile, targetFolder, [options])**\n\nExtract the zip file to the specified location.\n\n- `zipFile`: String\n- `targetFolder`: String\n- `options?`: [IExtractOptions](#iextractoptions) (optional)\n\nReturns: `Promise\u003cvoid\u003e`\n\n### Class: Zip\u003ca id=\"class-zip\"\u003e\u003c/a\u003e\nCompress files or folders to a zip file.\n\n**Constructor: new Zip([options])**\n\n- `options?`: [IZipOptions](#izipoptions)\n\n**Method: addFile(file, [metadataPath])**\n\nAdds a file from the file system at realPath into the zipfile as metadataPath.\n\n- `file`: String\n- `metadataPath?`: String (optional) - Typically metadataPath would be calculated as path.relative(root, realPath). A valid metadataPath must not start with `/` or `/[A-Za-z]:\\//`, and must not contain `..`.\n\nReturns: `void`\n\n**Method: addFolder(folder, [metadataPath])**\n\nAdds a folder from the file system at realPath into the zipfile as metadataPath.\n\n- `folder`: String\n- `metadataPath?`: String (optional) - Typically metadataPath would be calculated as path.relative(root, realPath). A valid metadataPath must not start with `/` or `/[A-Za-z]:\\//`, and must not contain `..`.\n\nReturns: `void`\n\n**Method: archive(zipFile)**\n\nGenerate zip file.\n\n- `zipFile`: String\n\nReturns: `Promise\u003cviod\u003e`\n\n**Method: cancel()**\n\nCancel compression. If the `cancel` method is called after the archive is complete, nothing will happen.\n\nReturns: `void`\n\n### Class: Unzip\u003ca id=\"class-unzip\"\u003e\u003c/a\u003e\nExtract the zip file.\n\n**Constructor: new Unzip([options])**\n\n- `options?`: [IZipOptions](#izipoptions) (optional)\n\n**Method: extract(zipFile, targetFolder)**\n\nExtract the zip file to the specified location.\n\n- `zipFile`: String\n- `targetFolder`: String\n\nReturns: `Promise\u003cvoid\u003e`\n\n**Method: cancel()**\n\nIf the `cancel` method is called after the extract is complete, nothing will happen.\n\nReturns: `void`\n\n### Options: IZipOptions \u003ca id=\"izipoptions\"\u003e\u003c/a\u003e\n\nObject\n- `followSymlinks?`: Boolean (optional) - Indicates how to handle when the given path is a symbolic link. The default value is `false`.\u003cbr\u003e`true`: add the target of the symbolic link to the zip.\u003cbr\u003e`false`: add symbolic link itself to the zip.\n- `compressionLevel?`: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 - Sets the compression level. The default value is `6`.\u003cbr\u003e`0`: the file data will be stored.\u003cbr\u003e`1-9`: the file data will be deflated.\n\n### Options: IExtractOptions \u003ca id=\"iextractoptions\"\u003e\u003c/a\u003e\n\nObject\n- `overwrite?`: String (optional) - If it is true, the target directory will be deleted before extract. The default value is `false`.\n- `symlinkAsFileOnWindows?`: Boolean (optional) - Extract symbolic links as files on Windows. This value is only available on Windows and ignored on other platforms. The default value is `true`.\u003cbr\u003eIf `true`, the symlink in the zip will be extracted as a normal file on Windows.\u003cbr\u003eIf `false`, the symlink in the zip will be extracted as a symlink correctly on Windows, but an `EPERM` error will be thrown under non-administrators.\n\n    \u003e ⚠**WARNING:** On Windows, the default security policy allows only administrators to create symbolic links. If you set `symlinkAsFileOnWindows` to `false` and the zip contains symlink, be sure to run the code under the administrator, otherwise an `EPERM` error will be thrown.\n\n- `onEntry?`: Function (optional) - Called before an item is extracted.\u003cbr\u003eArguments:\n    - `event`: Object - Represents an event that an entry is about to be extracted.\n        - `entryName`: String (readonly) - Entry name.\n        - `entryCount`: Number (readonly) - Total number of entries.\n        - `preventDefault()`: Function - Prevent extracting current entry. This method can be used to prevent extraction of the current item. By calling this method we can control which items can be extracted.\n\n# License\nLicensed under the [MIT](https://github.com/fpsqdb/zip-lib/blob/master/LICENSE) license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpsqdb%2Fzip-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffpsqdb%2Fzip-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffpsqdb%2Fzip-lib/lists"}