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 |
patch-packageEnvironment{
"local_name": "patch-package",
"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 |
array-findEnvironment{
"local_name": "array-find",
"alias": false,
"peer_metadata": null
} | ^1.0.0 | development |
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 |
lzma-nativeEnvironment{
"local_name": "lzma-native",
"alias": false,
"peer_metadata": null
} | ^8.0.6 | 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
} | * | development |
@biomejs/biomeEnvironment{
"local_name": "@biomejs/biome",
"alias": false,
"peer_metadata": null
} | * | development |
pinkie-promiseEnvironment{
"local_name": "pinkie-promise",
"alias": false,
"peer_metadata": null
} | * | development |
node-version-useEnvironment{
"local_name": "node-version-use",
"alias": false,
"peer_metadata": null
} | * | development |
Source distribution
{
"shasum": "c1805aa896d5ad427ccda0cb3f54180b7ffa7182",
"tarball": "https://registry.npmjs.org/7z-iterator/-/7z-iterator-0.1.5.tgz",
"fileCount": 173,
"integrity": "sha512-pKIQwiWtRKy8OlcVmFpJZhL5381Cna8aPm72mQI88p/FqcG9+zPWg26YEr6rOS36+Ubm/XT/JG/7/H+LDakmDw==",
"signatures": [
{
"sig": "MEQCIFm8gA9vdlrvRNipHKQdrKFOdQjpkWTGZ5sAsmSHuUfYAiB/mk8zuqjCQ7ejJ3qkmN2kfJWWCpkp1TbuQdEfQt1r2A==",
"keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
}
],
"unpackedSize": 716983
}Observed since 20 Oct, 21:14 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:844c39b2309bce0826dcadafdfb387ce23dd724c20a557ad4e2d0a7d7dbb96d7