{"id":13825600,"url":"https://github.com/little-core-labs/unpacker-with-progress","last_synced_at":"2025-07-12T06:36:13.184Z","repository":{"id":57386797,"uuid":"227449475","full_name":"little-core-labs/unpacker-with-progress","owner":"little-core-labs","description":"Unpack zip and tar archives, with a uniform API and progress","archived":false,"fork":false,"pushed_at":"2020-10-07T21:46:11.000Z","size":40,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-04T13:34:12.385Z","etag":null,"topics":["tar","unpacker","unzip"],"latest_commit_sha":null,"homepage":"https://npmjs.com/unpacker-with-progress","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/little-core-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-11T20:00:25.000Z","updated_at":"2020-10-07T21:46:11.000Z","dependencies_parsed_at":"2022-09-26T16:50:40.487Z","dependency_job_id":null,"html_url":"https://github.com/little-core-labs/unpacker-with-progress","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/little-core-labs/unpacker-with-progress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/little-core-labs%2Funpacker-with-progress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/little-core-labs%2Funpacker-with-progress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/little-core-labs%2Funpacker-with-progress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/little-core-labs%2Funpacker-with-progress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/little-core-labs","download_url":"https://codeload.github.com/little-core-labs/unpacker-with-progress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/little-core-labs%2Funpacker-with-progress/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263671770,"owners_count":23494037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["tar","unpacker","unzip"],"created_at":"2024-08-04T09:01:24.005Z","updated_at":"2025-07-12T06:36:13.169Z","avatar_url":"https://github.com/little-core-labs.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# unpacker-with-progress\n[![Actions Status](https://github.com/little-core-labs/unpacker-with-progress/workflows/Tests/badge.svg)](https://github.com/little-core-labs/unpacker-with-progress/actions)\n\nUnpack `.tar`, `.tar.gz` and `.zip` archives, provide progress info, and an idempotent + resumable API.\n\n## Usage\n\n```js\nconst unpacker = require('unpacker-with-progress')\nconst zip = './some-zip.zip'\nconst tar = './some-zip.tar.gz'\nconst dest = './some-dest'\n\nfunction unpack () {\n  return Promise.all([\n    unpacker(zip, dest, { onprogress (progress) { console.log(progress.percent) } }),\n    unpacker(tar, dest, { onprogress (progress) { console.log(progress.percent) } })\n  ])\n}\n\nunpack().then(stats =\u003e console.log('done'))\n```\n\n## Installation\n\n```console\n$ npm install unpacker-with-progress -g\n```\n\n## API\n\n### `promise(stats) = unpacker(src, dest, [opts])`\n\nUnpack a `zip` or `tar.gz` at the given `src` path, to the `dest` path.  Returns a promise that resolves to a `stats` object.\n\nOpts include:\n\n```js\n{\n  resume: true, // Skip files if they are already extracted in dest\n  onprogress (stats) { /* noop */ } // progress function.  Use this to track progress while extraacting.\n}\n```\n\nThe `stats` object contains the following properties:\n\n```js\n{\n  entriesProcessed, // running total of entries processed\n  percent, // percentage of extraction complete 0.0 - 1.0\n  skipped, // number of entries skipped\n  unpacked, // number of files extracted\n  totalEntries, // Total number of entries\n  total, // total number of bytes after extraction\n  loaded // running total of bytes written\n}\n```\n\n## See also\n\nThis module implements the desired interface over the following modules:\n\n- [tar-fs](https://github.com/mafintosh/tar-fs)\n- [yauzl](https://github.com/thejoshwolfe/yauzl)\n\n## Liscense\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flittle-core-labs%2Funpacker-with-progress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flittle-core-labs%2Funpacker-with-progress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flittle-core-labs%2Funpacker-with-progress/lists"}