import { gunzip } from "fflate" import { parseTar } from "nanotar" import { toUnit8Array } from "../../../bit" export async function untgz(data: Blob | ArrayBuffer | Uint8Array): Promise<{ [filePath: string]: Uint8Array }> { let buffer = await toUnit8Array(data) let tar = await new Promise((resolve, reject) => { gunzip(buffer, (err, data) => { if (err) reject(err) resolve(data) }) }) if (tar === null) throw new Error("untgz failed, tar is null") let ungzipped = parseTar(tar) let files: { [filePath: string]: Uint8Array } = {} for (const entry of ungzipped) { files[entry.name] = entry.data } return files }