diff options
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index efd27bc99..3f395f410 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -101,7 +101,7 @@ pub struct StateSnapshot { pub cache_metadata: cache::CacheMetadata, pub documents: Documents, pub maybe_import_map: Option<Arc<ImportMap>>, - pub maybe_npm_resolver: Option<NpmPackageResolver>, + pub maybe_npm_resolver: Option<Arc<NpmPackageResolver>>, } #[derive(Debug)] @@ -145,13 +145,13 @@ pub struct Inner { /// A lazily create "server" for handling test run requests. maybe_testing_server: Option<testing::TestServer>, /// Npm's registry api. - npm_api: CliNpmRegistryApi, + npm_api: Arc<CliNpmRegistryApi>, /// Npm cache - npm_cache: NpmCache, + npm_cache: Arc<NpmCache>, /// Npm resolution that is stored in memory. - npm_resolution: NpmResolution, + npm_resolution: Arc<NpmResolution>, /// Resolver for npm packages. - npm_resolver: NpmPackageResolver, + npm_resolver: Arc<NpmPackageResolver>, /// A collection of measurements which instrument that performance of the LSP. performance: Arc<Performance>, /// A memoized version of fixable diagnostic codes retrieved from TypeScript. @@ -182,13 +182,15 @@ impl LanguageServer { .into_iter() .map(|d| (d.specifier().clone(), d)) .collect::<HashMap<_, _>>(); + // todo(dsherret): don't use ProcState here let ps = ProcState::from_cli_options(Arc::new(cli_options)).await?; - let mut inner_loader = ps.create_graph_loader(); + let mut inner_loader = ps.module_graph_builder.create_graph_loader(); let mut loader = crate::lsp::documents::OpenDocumentsGraphLoader { inner_loader: &mut inner_loader, open_docs: &open_docs, }; let graph = ps + .module_graph_builder .create_graph_with_loader(roots.clone(), &mut loader) .await?; graph_util::graph_valid( @@ -418,14 +420,14 @@ fn create_lsp_structs( dir: &DenoDir, http_client: HttpClient, ) -> ( - CliNpmRegistryApi, - NpmCache, - NpmPackageResolver, - NpmResolution, + Arc<CliNpmRegistryApi>, + Arc<NpmCache>, + Arc<NpmPackageResolver>, + Arc<NpmResolution>, ) { let registry_url = CliNpmRegistryApi::default_url(); let progress_bar = ProgressBar::new(ProgressBarStyle::TextOnly); - let npm_cache = NpmCache::from_deno_dir( + let npm_cache = Arc::new(NpmCache::from_deno_dir( dir, // Use an "only" cache setting in order to make the // user do an explicit "cache" command and prevent @@ -434,14 +436,15 @@ fn create_lsp_structs( CacheSetting::Only, http_client.clone(), progress_bar.clone(), - ); - let api = CliNpmRegistryApi::new( + )); + let api = Arc::new(CliNpmRegistryApi::new( registry_url.clone(), npm_cache.clone(), http_client, progress_bar.clone(), - ); - let resolution = NpmResolution::from_serialized(api.clone(), None, None); + )); + let resolution = + Arc::new(NpmResolution::from_serialized(api.clone(), None, None)); let fs_resolver = create_npm_fs_resolver( npm_cache.clone(), &progress_bar, @@ -452,7 +455,11 @@ fn create_lsp_structs( ( api, npm_cache, - NpmPackageResolver::new(resolution.clone(), fs_resolver, None), + Arc::new(NpmPackageResolver::new( + resolution.clone(), + fs_resolver, + None, + )), resolution, ) } @@ -695,12 +702,12 @@ impl Inner { maybe_import_map: self.maybe_import_map.clone(), maybe_npm_resolver: Some({ // create a new snapshotted npm resolution and resolver - let resolution = NpmResolution::new( + let resolution = Arc::new(NpmResolution::new( self.npm_api.clone(), self.npm_resolution.snapshot(), None, - ); - NpmPackageResolver::new( + )); + Arc::new(NpmPackageResolver::new( resolution.clone(), create_npm_fs_resolver( self.npm_cache.clone(), @@ -710,7 +717,7 @@ impl Inner { None, ), None, - ) + )) }), }) } @@ -1130,7 +1137,6 @@ impl Inner { self.client.show_message(MessageType::WARNING, err); } - // self.refresh_documents_config(); // todo(THIS PR): REMOVE self.assets.intitialize(self.snapshot()).await; self.performance.measure(mark); |