From 3e1fd07bddea679d8609ce40c6768e2e2eb1493e Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Thu, 4 Jul 2024 14:57:57 -0400 Subject: [PATCH 1/2] v0.1.16 --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- package.json | 18 +++++++++--------- src/transformers/inline_url.rs | 3 ++- src/transformers/remove_var.rs | 4 +--- tasks/utils/Cargo.toml | 2 +- tasks/xbuild/Cargo.toml | 2 +- tasks/xtest/Cargo.toml | 2 +- 8 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e086fc..39d9042 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1576,7 +1576,7 @@ dependencies = [ [[package]] name = "procss" -version = "0.1.15" +version = "0.1.16" dependencies = [ "anyhow", "base64 0.13.1", @@ -1592,7 +1592,7 @@ dependencies = [ [[package]] name = "procss-utils" -version = "0.1.15" +version = "0.1.16" dependencies = [ "once_cell", "regex", @@ -1600,7 +1600,7 @@ dependencies = [ [[package]] name = "procss-xbuild" -version = "0.1.15" +version = "0.1.16" dependencies = [ "once_cell", "procss-utils", @@ -1611,7 +1611,7 @@ dependencies = [ [[package]] name = "procss-xtest" -version = "0.1.15" +version = "0.1.16" dependencies = [ "grcov", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index 96c696e..2dba4b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "procss" -version = "0.1.15" +version = "0.1.16" edition = "2021" authors = ["Andrew Stein "] description = "A simple CSS parsing and transformation framework." diff --git a/package.json b/package.json index 8363ff5..2975c94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@prospective.co/procss", - "version": "0.1.15", + "version": "0.1.16", "description": "A simple CSS parsing and transformation framework.", "repository": { "type": "git", @@ -16,16 +16,16 @@ "main": "target/esm/procss.js", "jsdelivr": "target/esm/procss.js", "exports": { - ".": "./target/esm/procss.js", - "./target/esm/*": "./target/esm/*", - "./target/cjs/*": "./target/cjs/*", - "./src/*": "./src/*", - "./package.json": "./package.json" + ".": "./target/esm/procss.js", + "./target/esm/*": "./target/esm/*", + "./target/cjs/*": "./target/cjs/*", + "./src/*": "./src/*", + "./package.json": "./package.json" }, "files": [ - "target/esm/**/*", - "target/cjs/**/*", - "src/**/*" + "target/esm/**/*", + "target/cjs/**/*", + "src/**/*" ], "types": "target/esm/procss.d.ts" } diff --git a/src/transformers/inline_url.rs b/src/transformers/inline_url.rs index edac669..9c5bcf5 100644 --- a/src/transformers/inline_url.rs +++ b/src/transformers/inline_url.rs @@ -17,6 +17,7 @@ use nom::bytes::complete::{is_not, tag}; use nom::sequence::delimited; use crate::ast::{Css, Rule}; +#[cfg(not(target_arch = "wasm32"))] use crate::utils::fs; #[cfg(feature = "iotest")] use crate::utils::IoTestFs; @@ -57,7 +58,7 @@ fn into_data_uri<'a>(path: &Path) -> Option> { "png" => "png", "gif" => "gif", "svg" => "svg+xml", - x => ggg.as_ref(), + _ => ggg.as_ref(), }; Some(format!("url(\"data:image/{};base64,{}\")", fmt, encoded).into()) diff --git a/src/transformers/remove_var.rs b/src/transformers/remove_var.rs index 3bcc01c..c8c52f3 100644 --- a/src/transformers/remove_var.rs +++ b/src/transformers/remove_var.rs @@ -16,9 +16,7 @@ pub fn remove_var(css: &mut Css) { let reduced = css .iter() .filter(|&ruleset| match ruleset { - Ruleset::QualRule(QualRule(name, Some(val))) if val.strip_prefix(':').is_some() => { - false - } + Ruleset::QualRule(QualRule(_, Some(val))) if val.strip_prefix(':').is_some() => false, _ => true, }) .cloned(); diff --git a/tasks/utils/Cargo.toml b/tasks/utils/Cargo.toml index 69e0533..68b626a 100644 --- a/tasks/utils/Cargo.toml +++ b/tasks/utils/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "procss-utils" -version = "0.1.15" +version = "0.1.16" edition = "2021" [lib] diff --git a/tasks/xbuild/Cargo.toml b/tasks/xbuild/Cargo.toml index b1868ea..1c0c8fc 100644 --- a/tasks/xbuild/Cargo.toml +++ b/tasks/xbuild/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "procss-xbuild" -version = "0.1.15" +version = "0.1.16" edition = "2021" [[bin]] diff --git a/tasks/xtest/Cargo.toml b/tasks/xtest/Cargo.toml index 28f1edf..4e31187 100644 --- a/tasks/xtest/Cargo.toml +++ b/tasks/xtest/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "procss-xtest" -version = "0.1.15" +version = "0.1.16" edition = "2021" [[bin]] From bb06f4fc4aa1d139e4a8f6ec3900ed9b652455dc Mon Sep 17 00:00:00 2001 From: Andrew Stein Date: Sat, 7 Jun 2025 17:42:55 -0400 Subject: [PATCH 2/2] Fix `calc()` minify bug --- rust-toolchain.toml | 8 +++++++- src/ast/token/space.rs | 2 ++ tests/at_ruleset.rs | 6 +++--- tests/minify.rs | 10 ++++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 96f585f..e6420d5 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,10 @@ [toolchain] channel = "nightly-2023-10-12" -components = ["rustfmt", "clippy", "rust-src", "llvm-tools-preview"] +components = [ + "rustfmt", + "clippy", + "rust-src", + "llvm-tools-preview", + "rust-analyzer", +] targets = ["wasm32-unknown-unknown"] diff --git a/src/ast/token/space.rs b/src/ast/token/space.rs index fe8fa6f..4a1c37c 100644 --- a/src/ast/token/space.rs +++ b/src/ast/token/space.rs @@ -39,6 +39,7 @@ impl NeedsWhitespaceStringExt for str { || x == '+' || x == '"' || x == '\'' + || x == '(' }) .unwrap_or_default() } @@ -54,6 +55,7 @@ impl NeedsWhitespaceStringExt for str { || x == '_' || x == '%' || x == '+' + || x == ')' }) .unwrap_or_default() } diff --git a/tests/at_ruleset.rs b/tests/at_ruleset.rs index d2017e0..d914c47 100644 --- a/tests/at_ruleset.rs +++ b/tests/at_ruleset.rs @@ -131,7 +131,7 @@ fn test_font_face() { .map(|x| x.flatten_tree().as_css_string()) .as_deref(), Ok("@font-face{font-family:\"Open \ - Sans\";font-display:block;src:url(./font/open-sans.woff2)format(\"truetype\");}") + Sans\";font-display:block;src:url(./font/open-sans.woff2) format(\"truetype\");}") ) } @@ -149,7 +149,7 @@ fn test_media() { ) .map(|x| x.flatten_tree().as_css_string()) .as_deref(), - Ok("@media(max-width:1250px){div{color:red;}}") + Ok("@media (max-width:1250px){div{color:red;}}") ) } @@ -174,7 +174,7 @@ fn test_nested_media_preserved_after_flatten() { .map(|x| x.flatten_tree().as_css_string()) .as_deref(), Ok( - "@media(max-width:1250px){@media(min-width:50px){div{color:red;}div \ + "@media (max-width:1250px){@media (min-width:50px){div{color:red;}div \ span{color:blue;}}}" ) ) diff --git a/tests/minify.rs b/tests/minify.rs index 2ece13a..a4384b6 100644 --- a/tests/minify.rs +++ b/tests/minify.rs @@ -45,3 +45,13 @@ fn test_minify_svg() { Ok("div{background:url(\"data:image/svg+xml;utf8,\")#8b868045;}") ) } + +#[test] +fn test_minify_complex_calc() { + assert_matches!( + parse(r#"div { padding: calc(17px + ((var(--status-bar--height) - 48px) / 2)); }"#) + .map(|x| x.as_css_string()) + .as_deref(), + Ok("div{padding:calc(17px + ((var(--status-bar--height) - 48px)/2));}") + ) +}