summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/diagnostics.rs2
-rw-r--r--cli/lsp/documents.rs29
-rw-r--r--cli/lsp/language_server.rs10
3 files changed, 29 insertions, 12 deletions
diff --git a/cli/lsp/diagnostics.rs b/cli/lsp/diagnostics.rs
index 539868eca..8c2126561 100644
--- a/cli/lsp/diagnostics.rs
+++ b/cli/lsp/diagnostics.rs
@@ -27,12 +27,12 @@ use deno_core::serde::Deserialize;
use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::ModuleSpecifier;
-use deno_graph::npm::NpmPackageReqReference;
use deno_graph::Resolution;
use deno_graph::ResolutionError;
use deno_graph::SpecifierError;
use deno_lint::rules::LintRule;
use deno_runtime::tokio_util::create_basic_runtime;
+use deno_semver::npm::NpmPackageReqReference;
use log::error;
use std::collections::HashMap;
use std::sync::Arc;
diff --git a/cli/lsp/documents.rs b/cli/lsp/documents.rs
index 311979a53..abd91d7fd 100644
--- a/cli/lsp/documents.rs
+++ b/cli/lsp/documents.rs
@@ -21,7 +21,7 @@ use crate::node;
use crate::node::node_resolve_npm_reference;
use crate::node::NodeResolution;
use crate::npm::NpmPackageResolver;
-use crate::npm::NpmRegistryApi;
+use crate::npm::NpmRegistry;
use crate::npm::NpmResolution;
use crate::npm::PackageJsonDepsInstaller;
use crate::resolver::CliGraphResolver;
@@ -37,16 +37,17 @@ use deno_core::futures::future;
use deno_core::parking_lot::Mutex;
use deno_core::url;
use deno_core::ModuleSpecifier;
-use deno_graph::npm::NpmPackageReq;
-use deno_graph::npm::NpmPackageReqReference;
use deno_graph::GraphImport;
use deno_graph::Resolution;
use deno_runtime::deno_node::NodeResolutionMode;
use deno_runtime::deno_node::PackageJson;
use deno_runtime::permissions::PermissionsContainer;
+use deno_semver::npm::NpmPackageReq;
+use deno_semver::npm::NpmPackageReqReference;
use indexmap::IndexMap;
use lsp::Url;
use once_cell::sync::Lazy;
+use std::collections::BTreeMap;
use std::collections::HashMap;
use std::collections::HashSet;
use std::collections::VecDeque;
@@ -1165,7 +1166,7 @@ impl Documents {
maybe_import_map: Option<Arc<import_map::ImportMap>>,
maybe_config_file: Option<&ConfigFile>,
maybe_package_json: Option<&PackageJson>,
- npm_registry_api: NpmRegistryApi,
+ npm_registry_api: NpmRegistry,
npm_resolution: NpmResolution,
) {
fn calculate_resolver_config_hash(
@@ -1186,7 +1187,23 @@ impl Documents {
hasher.write_str(import_map.base_url().as_str());
}
hasher.write_hashable(&maybe_jsx_config);
- hasher.write_hashable(&maybe_package_json_deps);
+ if let Some(package_json_deps) = &maybe_package_json_deps {
+ // We need to ensure the hashing is deterministic so explicitly type
+ // this in order to catch if the type of package_json_deps ever changes
+ // from a sorted/deterministic BTreeMap to something else.
+ let package_json_deps: &BTreeMap<_, _> = *package_json_deps;
+ for (key, value) in package_json_deps {
+ hasher.write_hashable(key);
+ match value {
+ Ok(value) => {
+ hasher.write_hashable(value);
+ }
+ Err(err) => {
+ hasher.write_str(&err.to_string());
+ }
+ }
+ }
+ }
hasher.finish()
}
@@ -1847,7 +1864,7 @@ console.log(b, "hello deno");
#[test]
fn test_documents_refresh_dependencies_config_change() {
- let npm_registry_api = NpmRegistryApi::new_uninitialized();
+ let npm_registry_api = NpmRegistry::new_uninitialized();
let npm_resolution =
NpmResolution::new(npm_registry_api.clone(), None, None);
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index ce74c3747..c672f76f0 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -81,7 +81,7 @@ use crate::lsp::urls::LspUrlKind;
use crate::npm::create_npm_fs_resolver;
use crate::npm::NpmCache;
use crate::npm::NpmPackageResolver;
-use crate::npm::NpmRegistryApi;
+use crate::npm::NpmRegistry;
use crate::npm::NpmResolution;
use crate::proc_state::ProcState;
use crate::tools::fmt::format_file;
@@ -145,7 +145,7 @@ pub struct Inner {
/// A lazily create "server" for handling test run requests.
maybe_testing_server: Option<testing::TestServer>,
/// Npm's registry api.
- npm_api: NpmRegistryApi,
+ npm_api: NpmRegistry,
/// Npm cache
npm_cache: NpmCache,
/// Npm resolution that is stored in memory.
@@ -417,8 +417,8 @@ impl LanguageServer {
fn create_lsp_structs(
dir: &DenoDir,
http_client: HttpClient,
-) -> (NpmRegistryApi, NpmCache, NpmPackageResolver, NpmResolution) {
- let registry_url = NpmRegistryApi::default_url();
+) -> (NpmRegistry, NpmCache, NpmPackageResolver, NpmResolution) {
+ let registry_url = NpmRegistry::default_url();
let progress_bar = ProgressBar::new(ProgressBarStyle::TextOnly);
let npm_cache = NpmCache::from_deno_dir(
dir,
@@ -430,7 +430,7 @@ fn create_lsp_structs(
http_client.clone(),
progress_bar.clone(),
);
- let api = NpmRegistryApi::new(
+ let api = NpmRegistry::new(
registry_url.clone(),
npm_cache.clone(),
http_client,