1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- const StreamUnzip = require('./node_stream_zip_changed');
- //const StreamUnzip = require('node-stream-zip');
- class ZipReader {
- constructor() {
- this.zip = null;
- }
- checkState() {
- if (!this.zip)
- throw new Error('Zip closed');
- }
- async open(zipFile, zipEntries = true) {
- if (this.zip)
- throw new Error('Zip file is already open');
- const zip = new StreamUnzip.async({file: zipFile, skipEntryNameValidation: true});
-
- if (zipEntries)
- this.zipEntries = await zip.entries();
- this.zip = zip;
- }
- get entries() {
- this.checkState();
- return this.zipEntries;
- }
- async extractToBuf(entryFilePath) {
- this.checkState();
- return await this.zip.entryData(entryFilePath);
- }
- async extractToFile(entryFilePath, outputFile) {
- this.checkState();
- await this.zip.extract(entryFilePath, outputFile);
- }
- async extractAllToDir(outputDir) {
- this.checkState();
- await this.zip.extract(null, outputDir);
- }
- async close() {
- if (this.zip) {
- await this.zip.close();
- this.zip = null;
- this.zipEntries = undefined;
- }
- }
- }
- module.exports = ZipReader;
|