Skip to content

Commit 473b5da

Browse files
authored
fix: revert "fix: remove serde feature of lightningcss (#11706)" (#11796)
Revert "fix: remove `serde` feature of `lightningcss` (#11706)" This reverts commit db3cf1b.
1 parent 637a26d commit 473b5da

File tree

3 files changed

+37
-67
lines changed

3 files changed

+37
-67
lines changed

Cargo.lock

Lines changed: 32 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ itertools = { version = "0.14.0", default-features = false, features =
5757
itoa = { version = "1.0.14", default-features = false }
5858
json = { version = "0.12.4", default-features = false }
5959
jsonc-parser = { version = "0.26.2", default-features = false, features = ["serde"] }
60-
lightningcss = { version = "1.0.0-alpha.67", default-features = false }
60+
lightningcss = { version = "1.0.0-alpha.68", default-features = false, features = ["serde"] }
6161
linked_hash_set = { version = "0.1.5", default-features = false }
6262
md4 = { version = "0.10.2", default-features = false }
6363
memchr = { version = "2.7.5", default-features = false }

crates/rspack_cacheable/src/with/as_preset/lightningcss.rs

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,60 +15,6 @@ pub struct BrowsersResolver {
1515
value: String,
1616
}
1717

18-
// Helper functions for custom serialization without serde
19-
fn browsers_to_string(browsers: &Browsers) -> String {
20-
let parts = vec![
21-
browsers.android.map(|v| format!("android:{}", v)),
22-
browsers.chrome.map(|v| format!("chrome:{}", v)),
23-
browsers.edge.map(|v| format!("edge:{}", v)),
24-
browsers.firefox.map(|v| format!("firefox:{}", v)),
25-
browsers.ie.map(|v| format!("ie:{}", v)),
26-
browsers.ios_saf.map(|v| format!("ios_saf:{}", v)),
27-
browsers.opera.map(|v| format!("opera:{}", v)),
28-
browsers.safari.map(|v| format!("safari:{}", v)),
29-
browsers.samsung.map(|v| format!("samsung:{}", v)),
30-
];
31-
32-
parts.into_iter().flatten().collect::<Vec<_>>().join(",")
33-
}
34-
35-
fn string_to_browsers(s: &str) -> Result<Browsers, DeserializeError> {
36-
let mut browsers = Browsers::default();
37-
38-
if s.is_empty() {
39-
return Ok(browsers);
40-
}
41-
42-
for part in s.split(',') {
43-
let mut split = part.split(':');
44-
let browser = split
45-
.next()
46-
.ok_or_else(|| DeserializeError::MessageError("invalid browser format"))?;
47-
let version_str = split
48-
.next()
49-
.ok_or_else(|| DeserializeError::MessageError("invalid browser format"))?;
50-
51-
let version = version_str
52-
.parse::<u32>()
53-
.map_err(|_| DeserializeError::MessageError("invalid version format"))?;
54-
55-
match browser {
56-
"android" => browsers.android = Some(version),
57-
"chrome" => browsers.chrome = Some(version),
58-
"edge" => browsers.edge = Some(version),
59-
"firefox" => browsers.firefox = Some(version),
60-
"ie" => browsers.ie = Some(version),
61-
"ios_saf" => browsers.ios_saf = Some(version),
62-
"opera" => browsers.opera = Some(version),
63-
"safari" => browsers.safari = Some(version),
64-
"samsung" => browsers.samsung = Some(version),
65-
_ => return Err(DeserializeError::MessageError("unknown browser")),
66-
}
67-
}
68-
69-
Ok(browsers)
70-
}
71-
7218
impl ArchiveWith<Browsers> for AsPreset {
7319
type Archived = ArchivedString;
7420
type Resolver = BrowsersResolver;
@@ -89,7 +35,8 @@ where
8935
field: &Browsers,
9036
serializer: &mut S,
9137
) -> Result<Self::Resolver, SerializeError> {
92-
let value = browsers_to_string(field);
38+
let value = serde_json::to_string(field)
39+
.map_err(|_| SerializeError::MessageError("serialize serde_json value failed"))?;
9340
let inner = ArchivedString::serialize_from_str(&value, serializer)?;
9441
Ok(BrowsersResolver { value, inner })
9542
}
@@ -103,6 +50,7 @@ where
10350
field: &ArchivedString,
10451
_deserializer: &mut D,
10552
) -> Result<Browsers, DeserializeError> {
106-
string_to_browsers(field.as_str())
53+
serde_json::from_str(field.as_str())
54+
.map_err(|_| DeserializeError::MessageError("deserialize serde_json value failed"))
10755
}
10856
}

0 commit comments

Comments
 (0)