UNPKG

@paroicms/connector

Version:

An API to help build management tools for ParoiCMS instances

36 lines 1.46 kB
import { createWriteStream } from "node:fs"; import { join } from "node:path"; import { pathExists } from "@paroicms/internal-server-lib"; import archiver from "archiver"; export async function createZipArchive({ sourceDir, destDir, filename, logger, }) { if (!(await pathExists(sourceDir)) || !(await pathExists(destDir))) { throw new Error(`[zip-archive-builder] invalid source (${sourceDir}) or destination (${destDir}) directory path.`); } const zipFilename = `${filename}.zip`; const archivePath = join(destDir, zipFilename); return new Promise((resolve, reject) => { const output = createWriteStream(archivePath); const archive = archiver("zip", { zlib: { level: 9 }, }); output.on("close", () => { resolve({ archivePath, completeArchiveName: zipFilename, archiveWeight: archive.pointer(), }); }); archive.on("warning", () => { archive.on("warning", (error) => { logger.warn(`[zip-archive-builder] zip build warning: ${error}`); }); }); archive.on("error", (error) => { reject(new Error(`[zip-archive-builder] error to build zip archive: ${error}`)); }); archive.pipe(output); archive.directory(sourceDir, false); void archive.finalize(); }); } //# sourceMappingURL=archiver.helper.js.map