summaryrefslogtreecommitdiff
path: root/cli/lsp/npm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/npm.rs')
-rw-r--r--cli/lsp/npm.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/cli/lsp/npm.rs b/cli/lsp/npm.rs
index 6cd6882b4..d051237fb 100644
--- a/cli/lsp/npm.rs
+++ b/cli/lsp/npm.rs
@@ -18,14 +18,14 @@ use super::search::PackageSearchApi;
#[derive(Debug)]
pub struct CliNpmSearchApi {
- file_fetcher: FileFetcher,
+ file_fetcher: Arc<FileFetcher>,
resolver: NpmFetchResolver,
search_cache: DashMap<String, Arc<Vec<String>>>,
versions_cache: DashMap<String, Arc<Vec<Version>>>,
}
impl CliNpmSearchApi {
- pub fn new(file_fetcher: FileFetcher) -> Self {
+ pub fn new(file_fetcher: Arc<FileFetcher>) -> Self {
let resolver = NpmFetchResolver::new(file_fetcher.clone());
Self {
file_fetcher,
@@ -52,11 +52,14 @@ impl PackageSearchApi for CliNpmSearchApi {
search_url
.query_pairs_mut()
.append_pair("text", &format!("{} boost-exact:false", query));
- let file = self
- .file_fetcher
- .fetch(&search_url, &PermissionsContainer::allow_all())
- .await?
- .into_text_decoded()?;
+ let file_fetcher = self.file_fetcher.clone();
+ 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_npm_search_response(&file.source)?);
self.search_cache.insert(query.to_string(), names.clone());
Ok(names)