| /** |
| * @param {Uint8Array} chunk |
| * @param {string} format |
| */ |
| async function decompressData(chunk, format) { |
| const ds = new DecompressionStream(format); |
| const writer = ds.writable.getWriter(); |
| writer.write(chunk); |
| writer.close(); |
| const decompressedChunkList = await Array.fromAsync(ds.readable); |
| const mergedBlob = new Blob(decompressedChunkList); |
| return await mergedBlob.bytes(); |
| } |
| |
| /** |
| * @param {Uint8Array} chunk |
| * @param {string} format |
| */ |
| async function decompressDataOrPako(chunk, format) { |
| // Keep using pako for zlib to preserve existing test behavior |
| if (["deflate", "gzip"].includes(format)) { |
| return pako.inflate(chunk); |
| } |
| if (format === "deflate-raw") { |
| return pako.inflateRaw(chunk); |
| } |
| |
| // Use DecompressionStream for any newer formats, assuming implementations |
| // always implement decompression if they implement compression. |
| return decompressData(chunk, format); |
| } |