summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
authorYusuke Tanaka <yusuktan@maguro.dev>2023-08-08 10:07:29 -0700
committerGitHub <noreply@github.com>2023-08-08 10:07:29 -0700
commitf2e30a6f7999fa6ce4ab789266927e3abbb48e3f (patch)
tree9d941906a651fedf62818e3e9e8a782cf50d91ce /cli/lsp/language_server.rs
parent05f838a57cc5b5e7b262e1640baa4d93dfb0df28 (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.rs32
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,