Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
7z-iterator
Extract contents from 7z archives using an iterator API. Pure JavaScript, works on Node.js 0.8+
Read entries from a 7z archive with an async iterator, promises, callbacks, or a readable stream. Sources can be archive paths or readable streams.
npm install 7z-iterator
const SevenZipIterator = require('7z-iterator');
async function extract(archivePath, destination) {
const iterator = new SevenZipIterator(archivePath);
const links = [];
try {
for await (const entry of iterator) {
if (entry.type === 'link') links.unshift(entry);
else if (entry.type === 'symlink') links.push(entry);
else await entry.create(destination, { strip: 1 });
}
// Create links after their target directories and files.
for (const entry of links) await entry.create(destination, { strip: 1 });
} finally {
iterator.destroy();
}
}
extract('./archive.7z', './output').catch((error) => {
console.error(error);
process.exitCode = 1;
});
Node.js 0.8+ can use the callback form instead of for await:
var SevenZipIterator = require('7z-iterator');
var iterator = new SevenZipIterator('./archive.7z');
var links = [];
function createLinks(index, callback) {
if (index === links.length) return callback();
links[index].create('./output', { strip: 1 }, function(error) {
if (error) return callback(error);
createLinks(index + 1, callback);
});
}
iterator.forEach(function(entry, callback) {
if (entry.type === 'link') { links.unshift(entry); callback(); }
else if (entry.type === 'symlink') { links.push(entry); callback(); }
else entry.create('./output', { strip: 1 }, callback);
}, { callbacks: true, concurrency: 1 }, function(error) {
if (error) throw error;
createLinks(0, function(error) {
iterator.destroy();
if (error) throw error;
console.log('Extraction complete');
});
});
entry.create(destination, options) writes a file, directory, or link. Use { force: true } to overwrite existing entries. Pass an archive password to the iterator constructor, for example new SevenZipIterator(archivePath, { password: 'secret' }). A readable stream source is buffered to a temporary file because 7z parsing needs random access.
Node.js 0.8+ is supported, but older releases have smaller maximum Buffer sizes. LZMA1 folders must fit in one buffer; LZMA2 can stream incrementally and is preferred for large archives. On Node.js 0.8-4.x, archives larger than about 1 GB cannot be processed reliably.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
on-oneEnvironment{
"local_name": "on-one",
"alias": false,
"peer_metadata": null
} | ^1.0.10 | runtime |
os-shimEnvironment{
"local_name": "os-shim",
"alias": false,
"peer_metadata": null
} | ^0.1.3 | runtime |
queue-cbEnvironment{
"local_name": "queue-cb",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
xz-compatEnvironment{
"local_name": "xz-compat",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
short-hashEnvironment{
"local_name": "short-hash",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
graceful-fsEnvironment{
"local_name": "graceful-fs",
"alias": false,
"peer_metadata": null
} | ^4.2.11 | runtime |
temp-suffixEnvironment{
"local_name": "temp-suffix",
"alias": false,
"peer_metadata": null
} | ^1.0.10 | runtime |
call-once-fnEnvironment{
"local_name": "call-once-fn",
"alias": false,
"peer_metadata": null
} | ^1.1.6 | runtime |
mkdirp-classicEnvironment{
"local_name": "mkdirp-classic",
"alias": false,
"peer_metadata": null
} | ^0.5.2 | runtime |
unbzip2-streamEnvironment{
"local_name": "unbzip2-stream",
"alias": false,
"peer_metadata": null
} | 1.0.8 | runtime |
fs-remove-compatEnvironment{
"local_name": "fs-remove-compat",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | runtime |
extract-base-iteratorEnvironment{
"local_name": "extract-base-iterator",
"alias": false,
"peer_metadata": null
} | ^3.0.0 | runtime |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | * | development |
fs-iteratorEnvironment{
"local_name": "fs-iterator",
"alias": false,
"peer_metadata": null
} | ^7.0.0 | development |
tsds-configEnvironment{
"local_name": "tsds-config",
"alias": false,
"peer_metadata": null
} | * | development |
@types/mochaEnvironment{
"local_name": "@types/mocha",
"alias": false,
"peer_metadata": null
} | * | development |
ts-dev-stackEnvironment{
"local_name": "ts-dev-stack",
"alias": false,
"peer_metadata": null
} | * | development |
fs-stats-spysEnvironment{
"local_name": "fs-stats-spys",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | development |
pinkie-promiseEnvironment{
"local_name": "pinkie-promise",
"alias": false,
"peer_metadata": null
} | * | development |
get-file-compatEnvironment{
"local_name": "get-file-compat",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | development |
node-version-useEnvironment{
"local_name": "node-version-use",
"alias": false,
"peer_metadata": null
} | * | development |
Source distribution
{
"shasum": "59279482d935a50737c39e1a758b18a3504400bb",
"tarball": "https://registry.npmjs.org/7z-iterator/-/7z-iterator-2.2.0.tgz",
"fileCount": 166,
"integrity": "sha512-97sl+uIQ5UceeB049B2ANb4PE3eA0j2hYxG6KyNIwGWfdPNAiUTRe3bYIzJySuWTccHipPEaJi7z4LY6pxF5TQ==",
"signatures": [
{
"sig": "MEUCIQC/IoELuXT4DycjGTaIsYjVOomNB53xYJa1/qxsls7wXgIgErVhgdtrvTFGX3TT4W/oWMxMWLUpc84DyNtnjQT6c60=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 902419
}Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:dff2d68f06b4ed1c3ec70a9e840329466c63df4d905c86471e5ab6771791e679