diff options
author | Yusuke Tanaka <yusuktan@maguro.dev> | 2023-08-08 10:07:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-08 10:07:29 -0700 |
commit | f2e30a6f7999fa6ce4ab789266927e3abbb48e3f (patch) | |
tree | 9d941906a651fedf62818e3e9e8a782cf50d91ce /cli/lsp/language_server.rs | |
parent | 05f838a57cc5b5e7b262e1640baa4d93dfb0df28 (diff) |
refactor(cli): move `snapshot_from_lockfile` function to `deno_npm` (#20024)
This commit moves `snapshot_from_lockfile` function to [deno_npm
crate](https://github.com/denoland/deno_npm). This allows this function
to be called outside Deno CLI (in particular, Deno Deploy).
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 5b9ba94f1..f0da80bab 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -927,6 +927,25 @@ impl Inner { Ok(()) } + async fn get_npm_snapshot( + &self, + ) -> Option<ValidSerializedNpmResolutionSnapshot> { + let lockfile = self.config.maybe_lockfile()?; + let snapshot = + match snapshot_from_lockfile(lockfile.clone(), &*self.npm.api).await { + Ok(snapshot) => snapshot, + Err(err) => { + lsp_warn!("Failed getting npm snapshot from lockfile: {}", err); + return None; + } + }; + + // clear the memory cache to reduce memory usage + self.npm.api.clear_memory_cache(); + + Some(snapshot) + } + async fn recreate_npm_services_if_necessary(&mut self) { let deno_dir = match DenoDir::new(self.maybe_global_cache_path.clone()) { Ok(deno_dir) => deno_dir, @@ -948,18 +967,7 @@ impl Inner { registry_url, &progress_bar, ); - let maybe_snapshot = match self.config.maybe_lockfile() { - Some(lockfile) => { - match snapshot_from_lockfile(lockfile.clone(), &self.npm.api).await { - Ok(snapshot) => Some(snapshot), - Err(err) => { - lsp_warn!("Failed getting npm snapshot from lockfile: {}", err); - None - } - } - } - None => None, - }; + let maybe_snapshot = self.get_npm_snapshot().await; (self.npm.resolver, self.npm.resolution) = create_npm_resolver_and_resolution( registry_url, |