@obsidize/tar-browserify
Version:
Browser-based tar utility for packing and unpacking tar files (stream-capable)
54 lines (53 loc) • 2.07 kB
JavaScript
import { __asyncGenerator, __asyncValues, __await, __awaiter } from "tslib";
import { ArchiveReader } from './archive-reader';
import { ArchiveWriter } from './archive-writer';
/**
* Main entry point for extracting and creating tarballs.
* See TarIterator and TarEntry for more granular options.
*/
export class Archive extends ArchiveWriter {
constructor(entries) {
super(entries);
}
/**
* Parses an Archive instance from the given buffer, with all entries read into memory.
* The buffer should come from a complete, uncompressed tar file.
*/
static extract(buffer) {
return __awaiter(this, void 0, void 0, function* () {
const reader = yield ArchiveReader.wrap(buffer);
const entries = yield reader.readAllEntries();
return new Archive(entries);
});
}
/**
* Iterate over entries in-place from a given source buffer.
* The buffer should come from a complete, uncompressed tar file.
*/
static read(buffer) {
return __asyncGenerator(this, arguments, function* read_1() {
var _a, e_1, _b, _c;
const reader = yield __await(ArchiveReader.wrap(buffer));
try {
for (var _d = true, reader_1 = __asyncValues(reader), reader_1_1; reader_1_1 = yield __await(reader_1.next()), _a = reader_1_1.done, !_a;) {
_c = reader_1_1.value;
_d = false;
try {
const entry = _c;
yield yield __await(entry);
}
finally {
_d = true;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (!_d && !_a && (_b = reader_1.return)) yield __await(_b.call(reader_1));
}
finally { if (e_1) throw e_1.error; }
}
});
}
}