Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
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.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.2.13Registry latest | 12 Oct 2026 | 24 | |
| 2.2.12 | 12 Sept 2026 | 24 | |
| 2.2.11 | 24 Aug 2026 | 24 | |
| 2.2.10 | 23 Aug 2026 | 24 | |
| 2.2.9 | 26 May 2026 | 24 | |
| 2.2.8 | 26 May 2026 | 24 | |
| 2.2.7 | 22 May 2026 | 21 | |
| 2.2.6 | 22 May 2026 | 21 | |
| 2.2.5 | 27 Dec 2025 | 21 | |
| 2.2.4 | 26 Dec 2025 | 21 | |
| 2.2.3 | 26 Dec 2025 | 21 | |
| 2.2.2 | 25 Dec 2025 | 21 | |
| 2.2.1 | 25 Dec 2025 | 21 | |
| 2.2.0 | 25 Dec 2025 | 21 | |
| 2.1.1 | 24 Dec 2025 | 21 | |
| 2.1.0 | 24 Dec 2025 | 20 | |
| 2.0.4 | 22 Dec 2025 | 20 | |
| 2.0.3 | 22 Dec 2025 | 20 | |
| 2.0.2 | 22 Dec 2025 | 20 | |
| 2.0.0 | 22 Dec 2025 | 20 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f5720bd3525c206c5d1b8b14272c2e4377d5f8a6bf570ddb11fa6740b684065f