import JSZip, { JSZipFileOptions } from 'jszip' import { saveAs } from 'file-saver' interface File { name: string content: any options?: JSZipFileOptions } interface Zipped { saveFile: (filename: string) => void data: Blob } export const createZip = async (files: File[]): Promise => { const zip = new JSZip() files.forEach(({ name, content, options }) => { zip.file(name, content, options) }) const data = await zip.generateAsync({ type: "blob" }) return { saveFile: (filename: string) => saveAs(data, filename), data } }