higlass
Version:
HiGlass Hi-C / genomic / large data viewer
34 lines (32 loc) • 1.24 kB
JavaScript
import assert from './assert.js';
/**
* Decompress a compressed data source.
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/DecompressionStream DecompressionStream API}
*
* @example
* ```typescript
* const compressed = new Uint8Array([
* 0x1f, 0x8b, 0x08, 0x00, 0x1e, 0xc0, 0x7e, 0x67, 0x00, 0x03, 0xf3, 0x48,
* 0xcd, 0xc9, 0xc9, 0xd7, 0x51, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0x51, 0x04,
* 0x00, 0xe6, 0xc6, 0xe6, 0xeb, 0x0d, 0x00, 0x00, 0x00
* ]);
* console.log(await decompress(compressed, { format: "gzip" }).text()); // "Hello, world!"
* ```
*
* @param {BodyInit | Response} data - The compressed data.
* @param {Object} options
* @param {CompressionFormat} options.format
* @param {AbortSignal=} options.signal
* @returns {Response} A new response for decompressed data.
*
* @see {@link https://github.com/manzt/manzt/blob/1380bb/utils/decompress.js source}
*/
export default function decompress(data, options) {
const { format, signal } = options;
const response = data instanceof Response ? data : new Response(data);
assert(response.body, 'Response does not include a body.');
return new Response(
response.body.pipeThrough(new DecompressionStream(format), { signal }),
);
}