import { unzip, UnzipOptions, UnzipFileInfo } from "fflate" import { toUnit8Array } from "../../../bit" export async function unzipFast( data: Blob | ArrayBuffer | Uint8Array, options?: { // 只解压指定文件名的的文件 files: string[] // 终止信号 EventHub exit?: any } ) { let buffer = await toUnit8Array(data) let resultPs = new Promise((resolve, reject) => { let closer = unzip( buffer, { filter: options?.files ? (file: UnzipFileInfo) => { return options.files.includes(file.name) } : undefined, }, (out) => resolve(out) ) if (options?.exit) { options.exit.on("exit", () => { closer() reject("exit") }) } }) return await resultPs }