summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/analysis.rs4
-rw-r--r--cli/lsp/diagnostics.rs17
-rw-r--r--cli/lsp/documents.rs12
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);