diff --git a/Cargo.lock b/Cargo.lock index 766d210fa..b5f621312 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1474,15 +1474,14 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ "bitflags 2.4.2", "cfg-if", "foreign-types", "libc", - "once_cell", "openssl-macros", "openssl-sys", ] @@ -1506,9 +1505,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", diff --git a/crates/lsp-async-stub/src/lib.rs b/crates/lsp-async-stub/src/lib.rs index 57a5f0a01..530345e0b 100644 --- a/crates/lsp-async-stub/src/lib.rs +++ b/crates/lsp-async-stub/src/lib.rs @@ -67,7 +67,7 @@ impl CancelToken { self.cancelled.load(Ordering::SeqCst) } - pub fn as_err(&mut self) -> CancelTokenErr { + pub fn as_err(&mut self) -> CancelTokenErr<'_> { CancelTokenErr(self) } } diff --git a/crates/taplo-common/src/lib.rs b/crates/taplo-common/src/lib.rs index 313cf4037..0af5ca344 100644 --- a/crates/taplo-common/src/lib.rs +++ b/crates/taplo-common/src/lib.rs @@ -10,7 +10,8 @@ clippy::missing_fields_in_debug, clippy::similar_names, clippy::too_many_lines, - clippy::needless_continue + clippy::needless_continue, + clippy::struct_field_names )] pub mod config; diff --git a/crates/taplo-common/src/schema/associations.rs b/crates/taplo-common/src/schema/associations.rs index ee3944199..d33a679a5 100644 --- a/crates/taplo-common/src/schema/associations.rs +++ b/crates/taplo-common/src/schema/associations.rs @@ -17,7 +17,7 @@ use taplo::dom::Node; use tokio::sync::Semaphore; use url::Url; -pub const DEFAULT_CATALOGS: &[&str] = &["https://json.schemastore.org/api/json/catalog.json"]; +pub const DEFAULT_CATALOGS: &[&str] = &["https://www.schemastore.org/api/json/catalog.json"]; pub mod priority { pub const BUILTIN: usize = 10; @@ -504,7 +504,7 @@ pub struct SchemaStoreSchemaMeta { } pub const SCHEMA_STORE_CATALOG_SCHEMA_URL: &str = - "https://json.schemastore.org/schema-catalog.json"; + "https://www.schemastore.org/schema-catalog.json"; #[derive(Debug, Clone, Copy)] pub struct SchemaStoreCatalogSchema; diff --git a/crates/taplo-common/src/util.rs b/crates/taplo-common/src/util.rs index 7c12ab1d6..2a46d91a0 100644 --- a/crates/taplo-common/src/util.rs +++ b/crates/taplo-common/src/util.rs @@ -108,7 +108,7 @@ impl Normalize for PathBuf { } } -pub(crate) fn normalize_str(s: &str) -> Cow { +pub(crate) fn normalize_str(s: &str) -> Cow<'_, str> { let Some(percent_decoded) = percent_decode_str(s).decode_utf8().ok() else { return s.into(); }; diff --git a/crates/taplo-lsp/src/handlers/configuration.rs b/crates/taplo-lsp/src/handlers/configuration.rs index e2e5c39c2..757d60229 100644 --- a/crates/taplo-lsp/src/handlers/configuration.rs +++ b/crates/taplo-lsp/src/handlers/configuration.rs @@ -13,10 +13,7 @@ pub async fn configuration_change( context: Context>, params: Params, ) { - let p = match params.optional() { - None => return, - Some(p) => p, - }; + let Some(p) = params.optional() else { return }; let mut workspaces = context.workspaces.write().await; diff --git a/crates/taplo-lsp/src/handlers/documents.rs b/crates/taplo-lsp/src/handlers/documents.rs index 994d1f73f..f83b20733 100644 --- a/crates/taplo-lsp/src/handlers/documents.rs +++ b/crates/taplo-lsp/src/handlers/documents.rs @@ -19,10 +19,7 @@ pub(crate) async fn document_open( mut context: Context>, params: Params, ) { - let p = match params.optional() { - None => return, - Some(p) => p, - }; + let Some(p) = params.optional() else { return }; let mut workspaces = context.workspaces.write().await; let ws = workspaces.by_document_mut(&p.text_document.uri); @@ -91,15 +88,13 @@ pub(crate) async fn document_change( mut context: Context>, params: Params, ) { - let mut p = match params.optional() { - None => return, - Some(p) => p, + let Some(mut p) = params.optional() else { + return; }; // We expect one full change - let change = match p.content_changes.pop() { - None => return, - Some(c) => c, + let Some(change) = p.content_changes.pop() else { + return; }; let mut workspaces = context.workspaces.write().await; @@ -167,10 +162,7 @@ pub(crate) async fn document_close( context: Context>, params: Params, ) { - let p = match params.optional() { - None => return, - Some(p) => p, - }; + let Some(p) = params.optional() else { return }; let mut workspaces = context.workspaces.write().await; let ws = workspaces.by_document_mut(&p.text_document.uri); diff --git a/crates/taplo-lsp/src/handlers/workspaces.rs b/crates/taplo-lsp/src/handlers/workspaces.rs index d225f5f8a..049881909 100644 --- a/crates/taplo-lsp/src/handlers/workspaces.rs +++ b/crates/taplo-lsp/src/handlers/workspaces.rs @@ -8,10 +8,7 @@ pub async fn workspace_change( context: Context>, params: Params, ) { - let p = match params.optional() { - None => return, - Some(p) => p, - }; + let Some(p) = params.optional() else { return }; let mut workspaces = context.workspaces.write().await; let init_config = context.init_config.load(); diff --git a/crates/taplo-wasm/src/environment.rs b/crates/taplo-wasm/src/environment.rs index da40f90dc..a1e1e0fd9 100644 --- a/crates/taplo-wasm/src/environment.rs +++ b/crates/taplo-wasm/src/environment.rs @@ -36,8 +36,7 @@ impl AsyncRead for JsAsyncRead { let ret: JsValue = match self.f.call1(&this, &JsValue::from(buf.remaining())) { Ok(val) => val, Err(error) => { - return Poll::Ready(Err(io::Error::new( - io::ErrorKind::Other, + return Poll::Ready(Err(io::Error::other( format!("{:?}", error), ))); } @@ -58,7 +57,7 @@ impl AsyncRead for JsAsyncRead { Ok(()) } - Err(err) => Err(io::Error::new(io::ErrorKind::Other, format!("{:?}", err))), + Err(err) => Err(io::Error::other(format!("{:?}", err))), }; self.fut = None; @@ -96,8 +95,7 @@ impl AsyncWrite for JsAsyncWrite { let ret: JsValue = match self.f.call1(&this, &Uint8Array::from(buf).into()) { Ok(val) => val, Err(error) => { - return Poll::Ready(Err(io::Error::new( - io::ErrorKind::Other, + return Poll::Ready(Err(io::Error::other( format!("{:?}", error), ))); } @@ -114,7 +112,7 @@ impl AsyncWrite for JsAsyncWrite { let n = num_written.as_f64().unwrap_or(0.0).floor() as usize; Ok(n) } - Err(err) => Err(io::Error::new(io::ErrorKind::Other, format!("{:?}", err))), + Err(err) => Err(io::Error::other(format!("{:?}", err))), }; self.fut = None; diff --git a/crates/taplo/src/dom/node.rs b/crates/taplo/src/dom/node.rs index 7741228df..f656608d6 100644 --- a/crates/taplo/src/dom/node.rs +++ b/crates/taplo/src/dom/node.rs @@ -124,7 +124,7 @@ impl Node { Node::Table(t) => { let entries = t.entries().read(); for (key, node) in entries.iter() { - if glob.is_match(pattern) { + if glob.is_match(key.value()) { matched.push((KeyOrIndex::from(key.clone()), node.clone())); } } @@ -663,3 +663,5 @@ impl From for Node { Self::Invalid(v) } } + + diff --git a/crates/taplo/src/syntax.rs b/crates/taplo/src/syntax.rs index bae4279d2..a7a189b5e 100644 --- a/crates/taplo/src/syntax.rs +++ b/crates/taplo/src/syntax.rs @@ -64,13 +64,13 @@ pub enum SyntaxKind { #[regex(r"true|false")] BOOL, - #[regex(r#"(?:[1-9]\d\d\d-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)(?:T|t| )(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(?:\.|,)\d+)?(?:[Zz]|[+-][01]\d:[0-5]\d)"#)] + #[regex(r#"(?:[0-9][0-9][0-9][0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:(?:[0-9][0-9](?:0[48]|[2468][048]|[13579][26]))|(?:[2468][048]|[13579][26])00)-02-29)(?:T|t| )(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(?:\.|,)\d+)?(?:[Zz]|[+-][01]\d:[0-5]\d)"#)] DATE_TIME_OFFSET, - #[regex(r#"(?:[1-9]\d\d\d-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)(?:T|t| )(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(?:\.|,)\d+)?"#)] + #[regex(r#"(?:[0-9][0-9][0-9][0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:(?:[0-9][0-9](?:0[48]|[2468][048]|[13579][26]))|(?:[2468][048]|[13579][26])00)-02-29)(?:T|t| )(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(?:\.|,)\d+)?"#)] DATE_TIME_LOCAL, - #[regex(r#"(?:[1-9]\d\d\d-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)"#)] + #[regex(r#"(?:[0-9][0-9][0-9][0-9]-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:(?:[0-9][0-9](?:0[48]|[2468][048]|[13579][26]))|(?:[2468][048]|[13579][26])00)-02-29)"#)] DATE, #[regex(r#"(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(?:\.|,)\d+)?"#)] diff --git a/crates/taplo/src/tests/mod.rs b/crates/taplo/src/tests/mod.rs index 06975bcf9..7f6e616b4 100644 --- a/crates/taplo/src/tests/mod.rs +++ b/crates/taplo/src/tests/mod.rs @@ -54,3 +54,35 @@ cooldowns = { assert!(errors.is_empty(), "{:#?}", errors); } + +#[test] +fn get_matches_table_key() { + let src = r#" +name1 = "v" +other = "v2" +"#; + + let root = parse(src).into_dom(); + + let matched: Vec = root + .get_matches("na*") + .unwrap() + .map(|(k, _)| match k { + crate::dom::KeyOrIndex::Key(key) => key.value().to_string(), + crate::dom::KeyOrIndex::Index(idx) => idx.to_string(), + }) + .collect(); + + assert_eq!(matched, vec!["name1"]); +} + +#[test] +fn datetime_with_leading_zeros() { + let src = r#" +token_expires_at = 0001-01-01T00:00:00Z +"#; + + let errors = parse(src).errors; + + assert!(errors.is_empty(), "{:#?}", errors); +} diff --git a/editors/vscode/package.json b/editors/vscode/package.json index adbc0f3e9..fdb6beea8 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -233,7 +233,7 @@ "type": "string" }, "default": [ - "https://json.schemastore.org/api/json/catalog.json" + "https://www.schemastore.org/api/json/catalog.json" ] }, "evenBetterToml.schema.associations": { diff --git a/site/site/configuration/developing-schemas.md b/site/site/configuration/developing-schemas.md index 4f52816ef..71dc04149 100644 --- a/site/site/configuration/developing-schemas.md +++ b/site/site/configuration/developing-schemas.md @@ -82,7 +82,7 @@ Other than `fileMatch`, it is also possible to specify `regexMatch` that is matc "tomlValidation": [ { "regexMatch": "^.*foo.toml$", - "url": "https://json.schemastore.org/foo.json" + "url": "https://www.schemastore.org/foo.json" } ] }