summaryrefslogtreecommitdiff
path: root/cli/lsp/resolver.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/resolver.rs')
-rw-r--r--cli/lsp/resolver.rs51
1 files changed, 8 insertions, 43 deletions
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index 0567bba86..5c6708c79 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -3,7 +3,6 @@
use crate::args::create_default_npmrc;
use crate::args::package_json;
use crate::args::CacheSetting;
-use crate::cache::FastInsecureHasher;
use crate::graph_util::CliJsrUrlProvider;
use crate::http_util::HttpClient;
use crate::jsr::JsrCacheResolver;
@@ -60,7 +59,6 @@ pub struct LspResolver {
jsr_resolver: Option<Arc<JsrCacheResolver>>,
npm_resolver: Option<Arc<dyn CliNpmResolver>>,
node_resolver: Option<Arc<CliNodeResolver>>,
- npm_config_hash: LspNpmConfigHash,
redirect_resolver: Option<Arc<RedirectResolver>>,
graph_imports: Arc<IndexMap<ModuleSpecifier, GraphImport>>,
config: Arc<Config>,
@@ -73,7 +71,6 @@ impl Default for LspResolver {
jsr_resolver: None,
npm_resolver: None,
node_resolver: None,
- npm_config_hash: LspNpmConfigHash(0),
redirect_resolver: None,
graph_imports: Default::default(),
config: Default::default(),
@@ -82,26 +79,17 @@ impl Default for LspResolver {
}
impl LspResolver {
- pub async fn with_new_config(
- &self,
+ pub async fn from_config(
config: &Config,
cache: &LspCache,
http_client: Option<&Arc<HttpClient>>,
- ) -> Arc<Self> {
- let npm_config_hash = LspNpmConfigHash::new(config, cache);
+ ) -> Self {
let config_data = config.tree.root_data();
let mut npm_resolver = None;
let mut node_resolver = None;
- if npm_config_hash != self.npm_config_hash {
- if let (Some(http_client), Some(config_data)) = (http_client, config_data)
- {
- npm_resolver =
- create_npm_resolver(config_data, cache, http_client).await;
- node_resolver = create_node_resolver(npm_resolver.as_ref());
- }
- } else {
- npm_resolver = self.npm_resolver.clone();
- node_resolver = self.node_resolver.clone();
+ if let (Some(http_client), Some(config_data)) = (http_client, config_data) {
+ npm_resolver = create_npm_resolver(config_data, cache, http_client).await;
+ node_resolver = create_node_resolver(npm_resolver.as_ref());
}
let graph_resolver = create_graph_resolver(
config_data,
@@ -136,16 +124,15 @@ impl LspResolver {
)
})
.unwrap_or_default();
- Arc::new(Self {
+ Self {
graph_resolver,
jsr_resolver,
npm_resolver,
node_resolver,
- npm_config_hash,
redirect_resolver,
graph_imports,
config: Arc::new(config.clone()),
- })
+ }
}
pub fn snapshot(&self) -> Arc<Self> {
@@ -162,7 +149,6 @@ impl LspResolver {
jsr_resolver: self.jsr_resolver.clone(),
npm_resolver,
node_resolver,
- npm_config_hash: self.npm_config_hash.clone(),
redirect_resolver: self.redirect_resolver.clone(),
graph_imports: self.graph_imports.clone(),
config: self.config.clone(),
@@ -336,7 +322,7 @@ async fn create_npm_resolver(
let options = if config_data.byonm {
CliNpmResolverCreateOptions::Byonm(CliNpmResolverByonmCreateOptions {
fs: Arc::new(deno_fs::RealFs),
- root_node_modules_dir: node_modules_dir,
+ root_node_modules_dir: node_modules_dir.clone(),
})
} else {
CliNpmResolverCreateOptions::Managed(CliNpmResolverManagedCreateOptions {
@@ -422,27 +408,6 @@ fn create_graph_resolver(
}))
}
-#[derive(Debug, Clone, PartialEq, Eq)]
-struct LspNpmConfigHash(u64);
-
-impl LspNpmConfigHash {
- pub fn new(config: &Config, cache: &LspCache) -> Self {
- let config_data = config.tree.root_data();
- let scope = config_data.map(|d| &d.scope);
- let node_modules_dir =
- config_data.and_then(|d| d.node_modules_dir.as_ref());
- let lockfile = config_data.and_then(|d| d.lockfile.as_ref());
- let mut hasher = FastInsecureHasher::new();
- hasher.write_hashable(scope);
- hasher.write_hashable(node_modules_dir);
- if let Some(lockfile) = lockfile {
- hasher.write_hashable(&*lockfile.lock());
- }
- hasher.write_hashable(cache.deno_dir().npm_folder_path());
- Self(hasher.finish())
- }
-}
-
#[derive(Debug, Eq, PartialEq)]
struct RedirectEntry {
headers: Arc<HashMap<String, String>>,