diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-04-06 18:46:44 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-06 18:46:44 -0400 |
commit | d07aa4a0723b04583b7cb1e09152457d866d13d3 (patch) | |
tree | f329a30becca95583fb71b4158c939c68228ce06 /cli/lsp/documents.rs | |
parent | 1586c52b5b5ad511ec0bf896e94de8585f743cf8 (diff) |
refactor(npm): use deno_npm and deno_semver (#18602)
Diffstat (limited to 'cli/lsp/documents.rs')
-rw-r--r-- | cli/lsp/documents.rs | 29 |
1 files changed, 23 insertions, 6 deletions
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); |