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