diff --git a/Cargo.lock b/Cargo.lock index 9c364151d5503..dba54e5179f75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -107,12 +107,6 @@ dependencies = [ "virtue", ] -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.10.0" @@ -131,6 +125,12 @@ dependencies = [ "generic-array", ] +[[package]] +name = "borrow-or-share" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" + [[package]] name = "bpaf" version = "0.9.20" @@ -691,7 +691,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -742,11 +742,12 @@ dependencies = [ [[package]] name = "fluent-uri" -version = "0.1.4" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +checksum = "1918b65d96df47d3591bed19c5cca17e3fa5d0707318e4b5ef2eae01764df7e5" dependencies = [ - "bitflags 1.3.2", + "borrow-or-share", + "ref-cast", ] [[package]] @@ -1391,16 +1392,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] -name = "lsp-types" -version = "0.97.0" +name = "ls-types" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53353550a17c04ac46c585feb189c2db82154fc84b79c7a66c96c2c644f66071" +checksum = "7a7deb98ef9daaa7500324351a5bab7c80c644cfb86b4be0c4433b582af93510" dependencies = [ - "bitflags 1.3.2", + "bitflags", "fluent-uri", + "percent-encoding", "serde", "serde_json", - "serde_repr", ] [[package]] @@ -1443,7 +1444,7 @@ version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af30fe8e799dda3a555c496c59e960e4cff1e931b63acbaf3a3b25d9fad22b6" dependencies = [ - "bitflags 2.10.0", + "bitflags", "ctor", "futures", "napi-build", @@ -1507,7 +1508,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.10.0", + "bitflags", "cfg-if", "cfg_aliases", "libc", @@ -1722,7 +1723,7 @@ dependencies = [ name = "oxc_ast" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "oxc_allocator", "oxc_ast_macros", "oxc_data_structures", @@ -1747,7 +1748,7 @@ dependencies = [ name = "oxc_ast_tools" version = "0.0.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "bpaf", "convert_case", "cow-utils", @@ -1816,7 +1817,7 @@ dependencies = [ name = "oxc_cfg" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "itertools", "oxc_index", "oxc_syntax", @@ -1828,7 +1829,7 @@ dependencies = [ name = "oxc_codegen" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "cow-utils", "dragonbox_ecma", "insta", @@ -1976,7 +1977,7 @@ dependencies = [ name = "oxc_isolated_declarations" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "insta", "oxc_allocator", "oxc_ast", @@ -2017,7 +2018,7 @@ dependencies = [ name = "oxc_linter" version = "1.32.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "constcat", "convert_case", "cow-utils", @@ -2186,7 +2187,7 @@ dependencies = [ name = "oxc_parser" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "cow-utils", "memchr", "num-bigint", @@ -2259,7 +2260,7 @@ dependencies = [ name = "oxc_regular_expression" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "oxc_allocator", "oxc_ast_macros", "oxc_diagnostics", @@ -2363,7 +2364,7 @@ dependencies = [ name = "oxc_syntax" version = "0.102.0" dependencies = [ - "bitflags 2.10.0", + "bitflags", "cow-utils", "dragonbox_ecma", "nonmax", @@ -2842,7 +2843,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags", ] [[package]] @@ -2956,11 +2957,11 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.10.0", + "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3055,7 +3056,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3131,17 +3132,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "serde_spanned" version = "1.0.3" @@ -3346,7 +3336,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3527,17 +3517,16 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-lsp-server" -version = "0.22.1" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f3f8ec0dcfdda4d908bad2882fe0f89cf2b606e78d16491323e918dfa95765" +checksum = "2f0e711655c89181a6bc6a2cc348131fcd9680085f5b06b6af13427a393a6e72" dependencies = [ "bytes", "dashmap", "futures", "httparse", - "lsp-types", + "ls-types", "memchr", - "percent-encoding", "serde", "serde_json", "tokio", @@ -3901,7 +3890,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 4af62cc50f9fb..3e0800abcd568 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -227,7 +227,7 @@ smallvec = { version = "1.15.1", features = ["union", "serde"] } # Stack-allocat tempfile = "3.23.0" # Temporary files tokio = { version = "1.48.0", default-features = false } # Async runtime toml = { version = "0.9.8" } -tower-lsp-server = "0.22.1" # LSP server framework +tower-lsp-server = "0.23.0" # LSP server framework tracing-subscriber = "0.3.20" # Tracing implementation ureq = { version = "3.1.4", default-features = false } # HTTP client url = { version = "2.5.7" } # URL parsing diff --git a/crates/oxc_language_server/src/backend.rs b/crates/oxc_language_server/src/backend.rs index 3fae30fe3175c..42582dd6d12a2 100644 --- a/crates/oxc_language_server/src/backend.rs +++ b/crates/oxc_language_server/src/backend.rs @@ -8,7 +8,7 @@ use tokio::sync::{OnceCell, RwLock, SetError}; use tower_lsp_server::{ Client, LanguageServer, jsonrpc::{Error, ErrorCode, Result}, - lsp_types::{ + ls_types::{ CodeActionParams, CodeActionResponse, ConfigurationItem, Diagnostic, DidChangeConfigurationParams, DidChangeTextDocumentParams, DidChangeWatchedFilesParams, DidChangeWorkspaceFoldersParams, DidCloseTextDocumentParams, DidOpenTextDocumentParams, diff --git a/crates/oxc_language_server/src/capabilities.rs b/crates/oxc_language_server/src/capabilities.rs index 0eff8121169cb..8d49086cad33a 100644 --- a/crates/oxc_language_server/src/capabilities.rs +++ b/crates/oxc_language_server/src/capabilities.rs @@ -1,4 +1,4 @@ -use tower_lsp_server::lsp_types::{ +use tower_lsp_server::ls_types::{ ClientCapabilities, OneOf, SaveOptions, ServerCapabilities, TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions, TextDocumentSyncSaveOptions, WorkspaceFoldersServerCapabilities, WorkspaceServerCapabilities, @@ -52,7 +52,7 @@ pub fn server_capabilities() -> ServerCapabilities { #[cfg(test)] mod test { - use tower_lsp_server::lsp_types::{ + use tower_lsp_server::ls_types::{ ClientCapabilities, DidChangeWatchedFilesClientCapabilities, WorkspaceClientCapabilities, }; diff --git a/crates/oxc_language_server/src/file_system.rs b/crates/oxc_language_server/src/file_system.rs index 86d41bc4b8482..4fdfc100ddca5 100644 --- a/crates/oxc_language_server/src/file_system.rs +++ b/crates/oxc_language_server/src/file_system.rs @@ -1,4 +1,4 @@ -use tower_lsp_server::lsp_types::Uri; +use tower_lsp_server::ls_types::Uri; use crate::ConcurrentHashMap; diff --git a/crates/oxc_language_server/src/formatter/server_formatter.rs b/crates/oxc_language_server/src/formatter/server_formatter.rs index 01dfd7cb5d298..588145fdabe5a 100644 --- a/crates/oxc_language_server/src/formatter/server_formatter.rs +++ b/crates/oxc_language_server/src/formatter/server_formatter.rs @@ -9,10 +9,7 @@ use oxc_formatter::{ get_supported_source_type, }; use oxc_parser::Parser; -use tower_lsp_server::{ - UriExt, - lsp_types::{Pattern, Position, Range, ServerCapabilities, TextEdit, Uri}, -}; +use tower_lsp_server::ls_types::{Pattern, Position, Range, ServerCapabilities, TextEdit, Uri}; use crate::{ formatter::{FORMAT_CONFIG_FILES, options::FormatOptions as LSPFormatOptions}, @@ -69,7 +66,7 @@ impl ServerFormatterBuilder { impl ToolBuilder for ServerFormatterBuilder { fn server_capabilities(&self, capabilities: &mut ServerCapabilities) { capabilities.document_formatting_provider = - Some(tower_lsp_server::lsp_types::OneOf::Left(true)); + Some(tower_lsp_server::ls_types::OneOf::Left(true)); } fn build_boxed(&self, root_uri: &Uri, options: serde_json::Value) -> Box { Box::new(ServerFormatterBuilder::build(root_uri, options)) @@ -380,7 +377,7 @@ mod tests_builder { #[test] fn test_server_capabilities() { - use tower_lsp_server::lsp_types::{OneOf, ServerCapabilities}; + use tower_lsp_server::ls_types::{OneOf, ServerCapabilities}; let builder = ServerFormatterBuilder; let mut capabilities = ServerCapabilities::default(); diff --git a/crates/oxc_language_server/src/formatter/tester.rs b/crates/oxc_language_server/src/formatter/tester.rs index 037ab55c7e1d1..585d250ea5b1f 100644 --- a/crates/oxc_language_server/src/formatter/tester.rs +++ b/crates/oxc_language_server/src/formatter/tester.rs @@ -1,9 +1,6 @@ use std::{fmt::Write, path::PathBuf}; -use tower_lsp_server::{ - UriExt, - lsp_types::{TextEdit, Uri}, -}; +use tower_lsp_server::ls_types::{TextEdit, Uri}; use crate::{ ToolRestartChanges, diff --git a/crates/oxc_language_server/src/lib.rs b/crates/oxc_language_server/src/lib.rs index ba1ef900a7339..aee925815d18a 100644 --- a/crates/oxc_language_server/src/lib.rs +++ b/crates/oxc_language_server/src/lib.rs @@ -1,5 +1,5 @@ use rustc_hash::FxBuildHasher; -use tower_lsp_server::{LspService, Server, lsp_types::ServerInfo}; +use tower_lsp_server::{LspService, Server, ls_types::ServerInfo}; mod backend; mod capabilities; diff --git a/crates/oxc_language_server/src/linter/code_actions.rs b/crates/oxc_language_server/src/linter/code_actions.rs index e6e25c5e01110..c0fa742ce7c36 100644 --- a/crates/oxc_language_server/src/linter/code_actions.rs +++ b/crates/oxc_language_server/src/linter/code_actions.rs @@ -1,5 +1,5 @@ use log::debug; -use tower_lsp_server::lsp_types::{CodeAction, CodeActionKind, TextEdit, Uri, WorkspaceEdit}; +use tower_lsp_server::ls_types::{CodeAction, CodeActionKind, TextEdit, Uri, WorkspaceEdit}; use crate::linter::error_with_position::{FixedContent, LinterCodeAction}; diff --git a/crates/oxc_language_server/src/linter/error_with_position.rs b/crates/oxc_language_server/src/linter/error_with_position.rs index f76ba0630ea4a..1851d68f42e50 100644 --- a/crates/oxc_language_server/src/linter/error_with_position.rs +++ b/crates/oxc_language_server/src/linter/error_with_position.rs @@ -1,6 +1,6 @@ -use std::{borrow::Cow, str::FromStr}; +use std::borrow::Cow; -use tower_lsp_server::lsp_types::{ +use tower_lsp_server::ls_types::{ self, CodeDescription, Diagnostic, DiagnosticRelatedInformation, DiagnosticSeverity, NumberOrString, Position, Range, Uri, }; @@ -38,8 +38,8 @@ pub fn message_to_lsp_diagnostic( rope: &Rope, ) -> DiagnosticReport { let severity = match message.error.severity { - Severity::Error => Some(lsp_types::DiagnosticSeverity::ERROR), - _ => Some(lsp_types::DiagnosticSeverity::WARNING), + Severity::Error => Some(ls_types::DiagnosticSeverity::ERROR), + _ => Some(ls_types::DiagnosticSeverity::WARNING), }; let related_information = message.error.labels.as_ref().map(|spans| { @@ -51,10 +51,10 @@ pub fn message_to_lsp_diagnostic( let end_position = offset_to_position(rope, offset + span.len() as u32, source_text); - lsp_types::DiagnosticRelatedInformation { - location: lsp_types::Location { + ls_types::DiagnosticRelatedInformation { + location: ls_types::Location { uri: uri.clone(), - range: lsp_types::Range::new(start_position, end_position), + range: ls_types::Range::new(start_position, end_position), }, message: span .label() @@ -73,7 +73,8 @@ pub fn message_to_lsp_diagnostic( .error .url .as_ref() - .map(|url| CodeDescription { href: Uri::from_str(url).ok().unwrap() }); + .and_then(|url| url.parse().ok()) + .map(|href| CodeDescription { href }); let diagnostic_message = match &message.error.help { Some(help) => { @@ -187,7 +188,7 @@ pub fn generate_inverted_diagnostics( continue; }; let related_information = Some(vec![DiagnosticRelatedInformation { - location: lsp_types::Location { uri: uri.clone(), range: d.diagnostic.range }, + location: ls_types::Location { uri: uri.clone(), range: d.diagnostic.range }, message: "original diagnostic".to_string(), }]); for r in related_info { diff --git a/crates/oxc_language_server/src/linter/isolated_lint_handler.rs b/crates/oxc_language_server/src/linter/isolated_lint_handler.rs index fc60fa5b1dae7..03dda7d0aed6f 100644 --- a/crates/oxc_language_server/src/linter/isolated_lint_handler.rs +++ b/crates/oxc_language_server/src/linter/isolated_lint_handler.rs @@ -6,7 +6,7 @@ use std::{ use log::{debug, warn}; use oxc_data_structures::rope::Rope; use rustc_hash::FxHashSet; -use tower_lsp_server::{UriExt, lsp_types::Uri}; +use tower_lsp_server::ls_types::Uri; use oxc_allocator::Allocator; use oxc_linter::{ diff --git a/crates/oxc_language_server/src/linter/server_linter.rs b/crates/oxc_language_server/src/linter/server_linter.rs index 8f4af0fcd002b..9c86977926fad 100644 --- a/crates/oxc_language_server/src/linter/server_linter.rs +++ b/crates/oxc_language_server/src/linter/server_linter.rs @@ -1,14 +1,12 @@ use std::path::{Path, PathBuf}; -use std::str::FromStr; use std::sync::Arc; use ignore::gitignore::Gitignore; use log::{debug, warn}; use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet}; use tower_lsp_server::{ - UriExt, jsonrpc::ErrorCode, - lsp_types::{ + ls_types::{ CodeActionKind, CodeActionOptions, CodeActionOrCommand, CodeActionProviderCapability, Diagnostic, ExecuteCommandOptions, Pattern, Range, ServerCapabilities, Uri, WorkDoneProgressOptions, WorkspaceEdit, @@ -428,7 +426,7 @@ impl Tool for ServerLinter { } let args = FixAllCommandArgs::try_from(arguments).map_err(|_| ErrorCode::InvalidParams)?; - let uri = Uri::from_str(&args.uri).map_err(|_| ErrorCode::InvalidParams)?; + let uri: Uri = args.uri.parse().map_err(|_| ErrorCode::InvalidParams)?; if !self.is_responsible_for_uri(&uri) { return Ok(None); @@ -640,7 +638,7 @@ fn range_overlaps(a: Range, b: Range) -> bool { #[cfg(test)] mod tests_builder { - use tower_lsp_server::lsp_types::{ + use tower_lsp_server::ls_types::{ CodeActionKind, CodeActionOptions, CodeActionProviderCapability, ExecuteCommandOptions, ServerCapabilities, WorkDoneProgressOptions, }; diff --git a/crates/oxc_language_server/src/linter/tester.rs b/crates/oxc_language_server/src/linter/tester.rs index bd5e3996746f5..72780575ffe96 100644 --- a/crates/oxc_language_server/src/linter/tester.rs +++ b/crates/oxc_language_server/src/linter/tester.rs @@ -1,11 +1,8 @@ use std::{fmt::Write, path::PathBuf}; -use tower_lsp_server::{ - UriExt, - lsp_types::{ - CodeAction, CodeActionOrCommand, CodeDescription, Diagnostic, NumberOrString, Position, - Range, Uri, - }, +use tower_lsp_server::ls_types::{ + CodeAction, CodeActionOrCommand, CodeDescription, Diagnostic, NumberOrString, Position, Range, + Uri, }; use crate::{ diff --git a/crates/oxc_language_server/src/options.rs b/crates/oxc_language_server/src/options.rs index 08daf9a3042e7..f68da5fb42a5f 100644 --- a/crates/oxc_language_server/src/options.rs +++ b/crates/oxc_language_server/src/options.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use tower_lsp_server::lsp_types::Uri; +use tower_lsp_server::ls_types::Uri; #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] diff --git a/crates/oxc_language_server/src/tests.rs b/crates/oxc_language_server/src/tests.rs index bbbfc18f84b2e..4d79fe6b2ff9a 100644 --- a/crates/oxc_language_server/src/tests.rs +++ b/crates/oxc_language_server/src/tests.rs @@ -5,7 +5,7 @@ use tokio::io::{AsyncReadExt, AsyncWriteExt, DuplexStream}; use tower_lsp_server::{ Client, LspService, Server, jsonrpc::{ErrorCode, Id, Request, Response}, - lsp_types::*, + ls_types::*, }; use crate::{Tool, ToolBuilder, ToolRestartChanges, backend::Backend}; @@ -75,7 +75,7 @@ impl Tool for FakeTool { fn get_watcher_patterns( &self, options: serde_json::Value, - ) -> Vec { + ) -> Vec { if !matches!(options, serde_json::Value::Null) { return vec![]; } @@ -487,7 +487,7 @@ mod test_suite { use serde_json::{Value, json}; use tower_lsp_server::{ jsonrpc::{Id, Response}, - lsp_types::{ + ls_types::{ ApplyWorkspaceEditResponse, InitializeResult, PublishDiagnosticsParams, ServerInfo, WorkspaceEdit, WorkspaceFolder, }, diff --git a/crates/oxc_language_server/src/tool.rs b/crates/oxc_language_server/src/tool.rs index 85692e3f10793..51c9b893fee6e 100644 --- a/crates/oxc_language_server/src/tool.rs +++ b/crates/oxc_language_server/src/tool.rs @@ -1,6 +1,6 @@ use tower_lsp_server::{ jsonrpc::ErrorCode, - lsp_types::{ + ls_types::{ CodeActionKind, CodeActionOrCommand, Diagnostic, Pattern, Range, ServerCapabilities, TextEdit, Uri, WorkspaceEdit, }, diff --git a/crates/oxc_language_server/src/worker.rs b/crates/oxc_language_server/src/worker.rs index 9a4915ef45bee..cfeb2caf23b5e 100644 --- a/crates/oxc_language_server/src/worker.rs +++ b/crates/oxc_language_server/src/worker.rs @@ -2,9 +2,8 @@ use log::debug; use serde_json::json; use tokio::sync::{Mutex, RwLock}; use tower_lsp_server::{ - UriExt, jsonrpc::ErrorCode, - lsp_types::{ + ls_types::{ CodeActionKind, CodeActionOrCommand, Diagnostic, DidChangeWatchedFilesRegistrationOptions, FileEvent, FileSystemWatcher, GlobPattern, OneOf, Range, Registration, RelativePattern, TextEdit, Unregistration, Uri, WatchKind, WorkspaceEdit, @@ -380,7 +379,7 @@ fn registration_tool_watcher_id(tool: &str, root_uri: &Uri, patterns: Vec