use anyhow::Result;
use binaryen::{CodegenConfig, Module};
pub fn optimize_wasm(wasm_binary: &[u8]) -> Result<Vec<u8>> {
if wasm_binary.len() < 8 {
return Ok(wasm_binary.to_vec());
}
match Module::read(wasm_binary) {
Ok(mut module) => {
let config = CodegenConfig::default();
module.optimize(&config);
let optimized_binary = module.write();
if optimized_binary.len() < 8 {
Ok(wasm_binary.to_vec())
} else {
Ok(optimized_binary)
}
}
Err(_) => {
Ok(wasm_binary.to_vec())
}
}
}