From 41f618a1df6bb8c66d7968ac64456139b9f4c197 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 17 May 2023 17:38:50 -0400 Subject: fix(npm): improved optional dependency support (#19135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Note: If the package information has already been cached, then this requires running with `--reload` or for the registry information to be fetched some other way (ex. the cache busting). Closes #15544 --------- Co-authored-by: Bartek IwaƄczuk --- cli/lsp/language_server.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'cli/lsp') diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index e76ea0040..96329e4a1 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -10,6 +10,7 @@ use deno_core::serde_json::json; use deno_core::serde_json::Value; use deno_core::task::spawn; use deno_core::ModuleSpecifier; +use deno_npm::NpmSystemInfo; use deno_runtime::deno_fs; use deno_runtime::deno_node::NodeResolver; use deno_runtime::deno_node::PackageJson; @@ -467,6 +468,7 @@ fn create_lsp_structs( registry_url.clone(), resolution.clone(), None, + NpmSystemInfo::default(), ); ( api, @@ -725,6 +727,7 @@ impl Inner { self.npm_api.base_url().clone(), npm_resolution, None, + NpmSystemInfo::default(), ), None, )); @@ -1242,11 +1245,12 @@ impl Inner { async fn refresh_npm_specifiers(&mut self) { let package_reqs = self.documents.npm_package_reqs(); - if let Err(err) = self - .npm_resolver - .set_package_reqs((*package_reqs).clone()) - .await - { + let npm_resolver = self.npm_resolver.clone(); + // spawn to avoid the LSP's Send requirements + let handle = spawn(async move { + npm_resolver.set_package_reqs((*package_reqs).clone()).await + }); + if let Err(err) = handle.await.unwrap() { lsp_warn!("Could not set npm package requirements. {:#}", err); } } -- cgit v1.2.3