diff options
Diffstat (limited to 'cli/lsp')
-rw-r--r-- | cli/lsp/analysis.rs | 4 | ||||
-rw-r--r-- | cli/lsp/diagnostics.rs | 17 | ||||
-rw-r--r-- | cli/lsp/documents.rs | 12 |
3 files changed, 17 insertions, 16 deletions
diff --git a/cli/lsp/analysis.rs b/cli/lsp/analysis.rs index 63e0549fd..ec279022d 100644 --- a/cli/lsp/analysis.rs +++ b/cli/lsp/analysis.rs @@ -23,7 +23,7 @@ use deno_core::ModuleSpecifier; use deno_lint::rules::LintRule; use deno_runtime::deno_node::PackageJson; use deno_runtime::deno_node::PathClean; -use deno_semver::npm::NpmPackageReq; +use deno_semver::package::PackageReq; use import_map::ImportMap; use once_cell::sync::Lazy; use regex::Regex; @@ -187,7 +187,7 @@ impl<'a> TsResponseImportMapper<'a> { ) -> Option<String> { fn concat_npm_specifier( prefix: &str, - pkg_req: &NpmPackageReq, + pkg_req: &PackageReq, sub_path: Option<&str>, ) -> String { let result = format!("{}{}", prefix, pkg_req); diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs index 4e24673f3..817d2fbc4 100644 --- a/cli/lsp/diagnostics.rs +++ b/cli/lsp/diagnostics.rs @@ -39,6 +39,7 @@ use deno_lint::rules::LintRule; use deno_runtime::deno_node; use deno_runtime::tokio_util::create_basic_runtime; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageReq; use log::error; use std::collections::HashMap; use std::collections::HashSet; @@ -876,7 +877,7 @@ pub enum DenoDiagnostic { /// A remote module was not found in the cache. NoCache(ModuleSpecifier), /// A remote npm package reference was not found in the cache. - NoCacheNpm(NpmPackageReqReference, ModuleSpecifier), + NoCacheNpm(PackageReq, ModuleSpecifier), /// A local module was not found on the local file system. NoLocal(ModuleSpecifier), /// The specifier resolved to a remote specifier that was redirected to @@ -1086,7 +1087,7 @@ impl DenoDiagnostic { Self::InvalidAssertType(assert_type) => (lsp::DiagnosticSeverity::ERROR, format!("The module is a JSON module and expected an assertion type of \"json\". Instead got \"{assert_type}\"."), None), Self::NoAssertType => (lsp::DiagnosticSeverity::ERROR, "The module is a JSON module and not being imported with an import assertion. Consider adding `assert { type: \"json\" }` to the import statement.".to_string(), None), Self::NoCache(specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing remote URL: {specifier}"), Some(json!({ "specifier": specifier }))), - Self::NoCacheNpm(pkg_ref, specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing npm package: {}", pkg_ref.req), Some(json!({ "specifier": specifier }))), + Self::NoCacheNpm(pkg_req, specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Uncached or missing npm package: {}", pkg_req), Some(json!({ "specifier": specifier }))), Self::NoLocal(specifier) => (lsp::DiagnosticSeverity::ERROR, format!("Unable to load a local module: {specifier}\n Please check the file path."), None), Self::Redirect { from, to} => (lsp::DiagnosticSeverity::INFORMATION, format!("The import of \"{from}\" was redirected to \"{to}\"."), Some(json!({ "specifier": from, "redirect": to }))), Self::ResolutionError(err) => ( @@ -1159,9 +1160,10 @@ fn diagnose_resolution( { if let Some(npm_resolver) = &snapshot.maybe_npm_resolver { // show diagnostics for npm package references that aren't cached - if !npm_resolver.is_pkg_req_folder_cached(&pkg_ref.req) { + let req = pkg_ref.into_inner().req; + if !npm_resolver.is_pkg_req_folder_cached(&req) { diagnostics - .push(DenoDiagnostic::NoCacheNpm(pkg_ref, specifier.clone())); + .push(DenoDiagnostic::NoCacheNpm(req, specifier.clone())); } } } else if let Some(module_name) = specifier.as_str().strip_prefix("node:") @@ -1171,11 +1173,10 @@ fn diagnose_resolution( .push(DenoDiagnostic::InvalidNodeSpecifier(specifier.clone())); } else if let Some(npm_resolver) = &snapshot.maybe_npm_resolver { // check that a @types/node package exists in the resolver - let types_node_ref = - NpmPackageReqReference::from_str("npm:@types/node").unwrap(); - if !npm_resolver.is_pkg_req_folder_cached(&types_node_ref.req) { + let types_node_req = PackageReq::from_str("@types/node").unwrap(); + if !npm_resolver.is_pkg_req_folder_cached(&types_node_req) { diagnostics.push(DenoDiagnostic::NoCacheNpm( - types_node_ref, + types_node_req, ModuleSpecifier::parse("npm:@types/node").unwrap(), )); } diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs index 8227d2e4c..11fba693f 100644 --- a/cli/lsp/documents.rs +++ b/cli/lsp/documents.rs @@ -43,8 +43,8 @@ use deno_runtime::deno_node::NodeResolutionMode; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_node::PackageJson; use deno_runtime::permissions::PermissionsContainer; -use deno_semver::npm::NpmPackageReq; use deno_semver::npm::NpmPackageReqReference; +use deno_semver::package::PackageReq; use indexmap::IndexMap; use lsp::Url; use once_cell::sync::Lazy; @@ -846,7 +846,7 @@ pub struct Documents { /// settings. resolver: Arc<CliGraphResolver>, /// The npm package requirements found in npm specifiers. - npm_specifier_reqs: Arc<Vec<NpmPackageReq>>, + npm_specifier_reqs: Arc<Vec<PackageReq>>, /// Gets if any document had a node: specifier such that a @types/node package /// should be injected. has_injected_types_node_package: bool, @@ -1017,7 +1017,7 @@ impl Documents { } /// Returns a collection of npm package requirements. - pub fn npm_package_reqs(&mut self) -> Arc<Vec<NpmPackageReq>> { + pub fn npm_package_reqs(&mut self) -> Arc<Vec<PackageReq>> { self.calculate_dependents_if_dirty(); self.npm_specifier_reqs.clone() } @@ -1398,7 +1398,7 @@ impl Documents { dependents_map: HashMap<ModuleSpecifier, HashSet<ModuleSpecifier>>, analyzed_specifiers: HashSet<ModuleSpecifier>, pending_specifiers: VecDeque<ModuleSpecifier>, - npm_reqs: HashSet<NpmPackageReq>, + npm_reqs: HashSet<PackageReq>, has_node_builtin_specifier: bool, } @@ -1410,7 +1410,7 @@ impl Documents { // been analyzed in order to not cause an extra file system lookup self.pending_specifiers.push_back(dep.clone()); if let Ok(reference) = NpmPackageReqReference::from_specifier(dep) { - self.npm_reqs.insert(reference.req); + self.npm_reqs.insert(reference.into_inner().req); } } @@ -1468,7 +1468,7 @@ impl Documents { .has_node_builtin_specifier && !npm_reqs.iter().any(|r| r.name == "@types/node"); if self.has_injected_types_node_package { - npm_reqs.insert(NpmPackageReq::from_str("@types/node").unwrap()); + npm_reqs.insert(PackageReq::from_str("@types/node").unwrap()); } self.dependents_map = Arc::new(doc_analyzer.dependents_map); |