simple-minify-html 0.17.2

Extremely fast and simple fork of minify-html
Documentation
#[cfg(feature = "js")]
use oxc_allocator::Allocator;
#[cfg(feature = "js")]
use oxc_codegen::{Codegen, CodegenOptions};
#[cfg(feature = "js")]
use oxc_mangler::MangleOptions;
#[cfg(feature = "js")]
use oxc_minifier::{CompressOptions, Minifier, MinifierOptions};
#[cfg(feature = "js")]
use oxc_parser::Parser;
#[cfg(feature = "js")]
use oxc_span::SourceType;

use crate::whitespace::trimmed;

#[cfg(feature = "js")]
pub fn minify_js(out: &mut Vec<u8>, code: &[u8]) {
    let allocator = Allocator::default();
    let source_type = SourceType::cjs();
    let code = std::str::from_utf8(code).expect("js contained invalid utf-8");
    let minified = minify(&allocator, code, source_type);
    out.extend_from_slice(trimmed(minified.as_bytes()));
}

#[cfg(feature = "js")]
fn minify(allocator: &Allocator, source: &str, source_type: SourceType) -> String {
    let ret = Parser::new(allocator, source, source_type).parse();
    let mut program = ret.program;
    let options = MinifierOptions {
        mangle: Some(MangleOptions::default()),
        compress: Some(CompressOptions::default()),
    };
    let ret = Minifier::new(options).build(allocator, &mut program);
    Codegen::new()
        .with_options(CodegenOptions::minify())
        .with_scoping(ret.scoping)
        .build(&program)
        .code
}

#[cfg(not(feature = "js"))]
pub fn minify_js(out: &mut Vec<u8>, code: &[u8]) {
    out.extend_from_slice(trimmed(code));
}