diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-06-03 17:17:08 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-03 21:17:08 +0000 |
commit | 3341c50b6ae676cdc8f7b1c44221aa633f2bde68 (patch) | |
tree | e051e384d722403ea0a04402679a358ef61002dc /cli/lsp/jsr.rs | |
parent | 72088f2f52d65b2948155a11e7b56722bf6c10f9 (diff) |
refactor: don't share `reqwest::HttpClient` across tokio runtimes (#24092)
This also fixes several issues where we weren't properly creating http
clients with the user's settings.
Diffstat (limited to 'cli/lsp/jsr.rs')
-rw-r--r-- | cli/lsp/jsr.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/cli/lsp/jsr.rs b/cli/lsp/jsr.rs index 75906f8ab..a7b2f46ac 100644 --- a/cli/lsp/jsr.rs +++ b/cli/lsp/jsr.rs @@ -17,7 +17,7 @@ use super::search::PackageSearchApi; #[derive(Debug)] pub struct CliJsrSearchApi { - file_fetcher: FileFetcher, + file_fetcher: Arc<FileFetcher>, resolver: JsrFetchResolver, search_cache: DashMap<String, Arc<Vec<String>>>, versions_cache: DashMap<String, Arc<Vec<Version>>>, @@ -25,7 +25,7 @@ pub struct CliJsrSearchApi { } impl CliJsrSearchApi { - pub fn new(file_fetcher: FileFetcher) -> Self { + pub fn new(file_fetcher: Arc<FileFetcher>) -> Self { let resolver = JsrFetchResolver::new(file_fetcher.clone()); Self { file_fetcher, @@ -56,11 +56,15 @@ impl PackageSearchApi for CliJsrSearchApi { } let mut search_url = jsr_api_url().join("packages")?; search_url.query_pairs_mut().append_pair("query", query); - let file = self - .file_fetcher - .fetch(&search_url, &PermissionsContainer::allow_all()) - .await? - .into_text_decoded()?; + let file_fetcher = self.file_fetcher.clone(); + // spawn due to the lsp's `Send` requirement + let file = deno_core::unsync::spawn(async move { + file_fetcher + .fetch(&search_url, &PermissionsContainer::allow_all()) + .await? + .into_text_decoded() + }) + .await??; let names = Arc::new(parse_jsr_search_response(&file.source)?); self.search_cache.insert(query.to_string(), names.clone()); Ok(names) |