feat!: Download and extract from stream

This commit is contained in:
Lucàs
2024-09-24 14:35:30 +02:00
parent 0382499c0d
commit 5a00871319
18 changed files with 249 additions and 251 deletions
@@ -0,0 +1,18 @@
import ArchiveExtractor from "./ArchiveExtractor";
import unzipper from "unzipper";
import { pipeline } from "node:stream";
import { promisify } from "node:util";
class ZipExtractor implements ArchiveExtractor {
public static instance: ArchiveExtractor = new ZipExtractor();
async extract(
stream: ReadableStream,
destinationPath: string
): Promise<void> {
const streamPipeline = promisify(pipeline);
await streamPipeline(stream, unzipper.Extract({ path: destinationPath }));
}
}
export default ZipExtractor;