Skip to main content

turbopack_analyze/
compressed_size.rs

1use std::io::Write;
2
3use anyhow::Result;
4use flate2::{Compression, write::DeflateEncoder};
5
6/// Compresses an asset's content with default-level (level 6) deflate/gzip.
7/// Returns the size in bytes in the compressed output
8pub fn compressed_size_bytes(content: impl AsRef<[u8]>) -> Result<u32> {
9    // Use deflate over gzip to prevent individual file headers/footers from
10    // skewing the size results.
11    let mut encoder = DeflateEncoder::new(Vec::new(), Compression::default());
12    encoder.write_all(content.as_ref())?;
13    let compressed = encoder.finish()?;
14
15    Ok(compressed.len() as u32)
16}