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 |
|---|---|---|
pakoEnvironment{
"local_name": "pako",
"alias": false,
"peer_metadata": null
} | ^1.0.11 | runtime |
on-oneEnvironment{
"local_name": "on-one",
"alias": false,
"peer_metadata": null
} | * | runtime |
os-shimEnvironment{
"local_name": "os-shim",
"alias": false,
"peer_metadata": null
} | * | runtime |
rimraf2Environment{
"local_name": "rimraf2",
"alias": false,
"peer_metadata": null
} | * | runtime |
queue-cbEnvironment{
"local_name": "queue-cb",
"alias": false,
"peer_metadata": null
} | * | runtime |
seek-bzipEnvironment{
"local_name": "seek-bzip",
"alias": false,
"peer_metadata": null
} | ^2.0.0 | runtime |
short-hashEnvironment{
"local_name": "short-hash",
"alias": false,
"peer_metadata": null
} | * | runtime |
lzma-purejsEnvironment{
"local_name": "lzma-purejs",
"alias": false,
"peer_metadata": null
} | ^0.9.3 | runtime |
temp-suffixEnvironment{
"local_name": "temp-suffix",
"alias": false,
"peer_metadata": null
} | * | runtime |
call-once-fnEnvironment{
"local_name": "call-once-fn",
"alias": false,
"peer_metadata": null
} | * | runtime |
lodash.compactEnvironment{
"local_name": "lodash.compact",
"alias": false,
"peer_metadata": null
} | * | runtime |
mkdirp-classicEnvironment{
"local_name": "mkdirp-classic",
"alias": false,
"peer_metadata": null
} | * | runtime |
readable-streamEnvironment{
"local_name": "readable-stream",
"alias": false,
"peer_metadata": null
} | ^2.3.7 | runtime |
extract-base-iteratorEnvironment{
"local_name": "extract-base-iterator",
"alias": false,
"peer_metadata": null
} | * | runtime |
get-remoteEnvironment{
"local_name": "get-remote",
"alias": false,
"peer_metadata": null
} | ^2.2.1 | development |
@types/nodeEnvironment{
"local_name": "@types/node",
"alias": false,
"peer_metadata": null
} | * | development |
fs-iteratorEnvironment{
"local_name": "fs-iterator",
"alias": false,
"peer_metadata": null
} | * | development |
@types/mochaEnvironment{
"local_name": "@types/mocha",
"alias": false,
"peer_metadata": null
} | * | development |
fs-stats-spysEnvironment{
"local_name": "fs-stats-spys",
"alias": false,
"peer_metadata": null
} | * | development |
pinkie-promiseEnvironment{
"local_name": "pinkie-promise",
"alias": false,
"peer_metadata": null
} | * | development |
Source distribution
{
"shasum": "5e83b5997c747ba1af377c09a19e11cedfce94dc",
"tarball": "https://registry.npmjs.org/7z-iterator/-/7z-iterator-0.1.0.tgz",
"fileCount": 166,
"integrity": "sha512-h3VsR9eKOHBmPiS00zOZ0ig0xo1Dw4bgLFdRiZHvW20/97xvWT6sBN1VQZGFcB21SL33pHhY4jHyt5u6Y3YGqw==",
"signatures": [
{
"sig": "MEUCIDVFWtg3BlQnkivrocr2TWU/+Ei8Yjz3EcPHtxxpujStAiEAtA4kZJuv4ShSwM70m+wKiM8tXnk4gj2rMX3+T3eG5ic=",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 591960
}Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:76a463c5e058cc4841fbc17488674eae0914f503d280e4f706feef76ee2d9ff6