From da914da88df098fc5c084b183381826f7e67e428 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2026 11:15:35 +0000 Subject: [PATCH 1/2] deps(rust): bump selectors from 0.40.0 to 0.41.0 Bumps [selectors](https://github.com/servo/stylo) from 0.40.0 to 0.41.0. - [Release notes](https://github.com/servo/stylo/releases) - [Commits](https://github.com/servo/stylo/commits) --- updated-dependencies: - dependency-name: selectors dependency-version: 0.41.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 52 +++++++++++++++++++++++++++++++++++++++++++--------- Cargo.toml | 2 +- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 08383af..ff5ba5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -381,6 +381,19 @@ dependencies = [ "smallvec", ] +[[package]] +name = "cssparser" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11119743ad110e8c1bdccd930d7f5c30c99e5fc76a7b63ec9807e84eef0c5f59" +dependencies = [ + "cssparser-macros 0.7.0", + "dtoa-short", + "itoa", + "phf 0.14.0", + "smallvec", +] + [[package]] name = "cssparser-macros" version = "0.6.1" @@ -1036,7 +1049,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros", + "phf_macros 0.13.1", "phf_shared 0.13.1", "serde", ] @@ -1047,6 +1060,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6" dependencies = [ + "phf_macros 0.14.0", "phf_shared 0.14.0", "serde", ] @@ -1104,6 +1118,19 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "phf_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085" +dependencies = [ + "phf_generator 0.14.0", + "phf_shared 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "phf_shared" version = "0.13.1" @@ -1446,7 +1473,7 @@ dependencies = [ "memmap2", "precomputed-hash", "rayon", - "selectors 0.40.0", + "selectors 0.41.0", "serde", "serde_json", "thiserror", @@ -1501,26 +1528,24 @@ dependencies = [ "phf_codegen 0.13.1", "precomputed-hash", "rustc-hash", - "servo_arc", + "servo_arc 0.4.3", "smallvec", ] [[package]] name = "selectors" -version = "0.40.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeee001a77567bb05e71652718d3ff76d8697c151ac523e68e9513194eb2b75a" +checksum = "8322aebea94a6cc288ff884e8a49bdbceef60206c400c6c46d22e62fc4fd91a6" dependencies = [ "bitflags", - "cssparser 0.37.0", + "cssparser 0.38.0", "derive_more", "log", "new_debug_unreachable", - "phf 0.13.1", - "phf_codegen 0.13.1", "precomputed-hash", "rustc-hash", - "servo_arc", + "servo_arc 0.5.0", "smallvec", ] @@ -1582,6 +1607,15 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "servo_arc" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4eceb519ec34d8290aaf6e46f435102f2bfa63f22b05a144fb16ab266d3b198" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "shlex" version = "2.0.1" diff --git a/Cargo.toml b/Cargo.toml index d8d141e..0331692 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ scrape-cli = { path = "crates/scrape-cli", version = "0.2.13" } scrape-core = { path = "crates/scrape-core", default-features = false, version = "0.2.13" } scraper = "0.27" select = "0.6" -selectors = "0.40" +selectors = "0.41" serde = "1.0" serde_json = "1.0" tempfile = "3.27" From f2375c30b33df6c21a52d239df8946597eefa0e9 Mon Sep 17 00:00:00 2001 From: "Andrei G." Date: Mon, 5 Oct 2026 15:48:37 +0200 Subject: [PATCH 2/2] fix(core): adapt selector parser to selectors 0.41 and cssparser 0.38 Bump cssparser to 0.38 as required by selectors 0.41; drop Impl associated type, SourceLocation parameter and error lifetime. --- Cargo.lock | 15 +------------ Cargo.toml | 2 +- crates/scrape-core/src/query/selector.rs | 28 +++++++++--------------- 3 files changed, 12 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ff5ba5e..183406d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -368,19 +368,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "cssparser" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98" -dependencies = [ - "cssparser-macros 0.7.0", - "dtoa-short", - "itoa", - "phf 0.13.1", - "smallvec", -] - [[package]] name = "cssparser" version = "0.38.0" @@ -1464,7 +1451,7 @@ name = "scrape-core" version = "0.2.13" dependencies = [ "criterion", - "cssparser 0.37.0", + "cssparser 0.38.0", "encoding_rs", "html5ever", "lol_html", diff --git a/Cargo.toml b/Cargo.toml index 0331692..bd6c6ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ assert_cmd = "2.2" clap = "4.6" criterion = { version = "0.8", default-features = false } csv = "1.4" -cssparser = "0.37" +cssparser = "0.38" encoding_rs = "0.8" html5ever = "0.40" is-terminal = "0.4" diff --git a/crates/scrape-core/src/query/selector.rs b/crates/scrape-core/src/query/selector.rs index 38d1eb9..f50decd 100644 --- a/crates/scrape-core/src/query/selector.rs +++ b/crates/scrape-core/src/query/selector.rs @@ -154,8 +154,6 @@ pub enum NonTSPseudoClass { } impl selectors::parser::NonTSPseudoClass for NonTSPseudoClass { - type Impl = ScrapeSelector; - fn is_active_or_hover(&self) -> bool { false } @@ -181,9 +179,7 @@ impl ToCss for NonTSPseudoClass { #[derive(Debug, Clone, PartialEq, Eq)] pub enum PseudoElement {} -impl selectors::parser::PseudoElement for PseudoElement { - type Impl = ScrapeSelector; -} +impl selectors::parser::PseudoElement for PseudoElement {} impl ToCss for PseudoElement { fn to_css(&self, _dest: &mut W) -> fmt::Result @@ -213,22 +209,18 @@ struct SelectorParser; impl<'i> Parser<'i> for SelectorParser { type Impl = ScrapeSelector; - type Error = SelectorParseErrorKind<'i>; + type Error = SelectorParseErrorKind; fn parse_non_ts_pseudo_class( &self, - location: cssparser::SourceLocation, name: cssparser::CowRcStr<'i>, - ) -> Result> { + ) -> Result> { match name.as_ref() { "link" => Ok(NonTSPseudoClass::Link), "any-link" => Ok(NonTSPseudoClass::AnyLink), - _ => Err(cssparser::ParseError { - kind: cssparser::ParseErrorKind::Custom( - SelectorParseErrorKind::UnsupportedPseudoClassOrElement(name), - ), - location, - }), + _ => Err(cssparser::ParseError::custom( + SelectorParseErrorKind::UnsupportedPseudoClassOrElement, + )), } } } @@ -247,15 +239,15 @@ impl<'i> Parser<'i> for SelectorParser { /// let selectors = parse_selector("div.container > span").unwrap(); /// ``` pub fn parse_selector(selector: &str) -> QueryResult> { - let mut parser_input = cssparser::ParserInput::new(selector); - let mut parser = cssparser::Parser::new(&mut parser_input); + let mut parser = cssparser::Parser::new(selector); - SelectorList::parse(&SelectorParser, &mut parser, ParseRelative::No).map_err(|e| { + SelectorList::parse(&SelectorParser, &mut parser, ParseRelative::No).map_err(|_| { // Sanitize error messages to expose only position info, avoiding potential // information disclosure from internal parser state in public error messages. + let location = parser.current_source_location(); QueryError::invalid_selector(format!( "invalid selector at line {}, column {}", - e.location.line, e.location.column + location.line, location.column )) }) }