All files / app/lib compression.ts

100% Statements 11/11
100% Branches 2/2
100% Functions 3/3
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  665x       665x 665x 131952x 131952x 131287x   665x     511x 511x 508x    
export async function compress(content: object) {
  const streamReader = new Blob([JSON.stringify(content)])
    .stream()
    .pipeThrough(new CompressionStream('gzip'))
    .getReader()
  const chunks = []
  while (true) {
    const {done, value} = await streamReader.read()
    if (done) break
    chunks.push(value)
  }
  return new Blob(chunks)
}
export async function decompress(blob: Blob) {
  const stream = blob.stream().pipeThrough(new DecompressionStream('gzip'))
  const json = await new Response(stream).json()
  return json
}