summaryrefslogtreecommitdiff
path: root/cli/npm/managed/registry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/managed/registry.rs')
-rw-r--r--cli/npm/managed/registry.rs58
1 files changed, 19 insertions, 39 deletions
diff --git a/cli/npm/managed/registry.rs b/cli/npm/managed/registry.rs
index 32161f235..14c3bd38f 100644
--- a/cli/npm/managed/registry.rs
+++ b/cli/npm/managed/registry.rs
@@ -21,14 +21,13 @@ use crate::util::sync::AtomicFlag;
use super::cache::NpmCache;
use super::cache::RegistryInfoDownloader;
-// todo(dsherret): make this per worker
#[derive(Debug)]
pub struct CliNpmRegistryApi(Option<Arc<CliNpmRegistryApiInner>>);
impl CliNpmRegistryApi {
pub fn new(
cache: Arc<NpmCache>,
- registry_info_downloader: RegistryInfoDownloader,
+ registry_info_downloader: Arc<RegistryInfoDownloader>,
) -> Self {
Self(Some(Arc::new(CliNpmRegistryApiInner {
cache,
@@ -44,13 +43,6 @@ impl CliNpmRegistryApi {
self.inner().clear_memory_cache();
}
- pub fn get_cached_package_info(
- &self,
- name: &str,
- ) -> Option<Arc<NpmPackageInfo>> {
- self.inner().get_cached_package_info(name)
- }
-
fn inner(&self) -> &Arc<CliNpmRegistryApiInner> {
// this panicking indicates a bug in the code where this
// wasn't initialized
@@ -76,20 +68,7 @@ impl NpmRegistryApi for CliNpmRegistryApi {
}
fn mark_force_reload(&self) -> bool {
- // never force reload the registry information if reloading
- // is disabled or if we're already reloading
- if matches!(
- self.inner().cache.cache_setting(),
- CacheSetting::Only | CacheSetting::ReloadAll
- ) {
- return false;
- }
- if self.inner().force_reload_flag.raise() {
- self.clear_memory_cache(); // clear the cache to force reloading
- true
- } else {
- false
- }
+ self.inner().mark_force_reload()
}
}
@@ -108,7 +87,7 @@ struct CliNpmRegistryApiInner {
force_reload_flag: AtomicFlag,
mem_cache: Mutex<HashMap<String, CacheItem>>,
previously_reloaded_packages: Mutex<HashSet<String>>,
- registry_info_downloader: RegistryInfoDownloader,
+ registry_info_downloader: Arc<RegistryInfoDownloader>,
}
impl CliNpmRegistryApiInner {
@@ -128,7 +107,7 @@ impl CliNpmRegistryApiInner {
let api = self.clone();
let name = name.to_string();
async move {
- if (api.cache.cache_setting().should_use_for_npm_package(&name) && !api.force_reload())
+ if (api.cache.cache_setting().should_use_for_npm_package(&name) && !api.force_reload_flag.is_raised())
// if this has been previously reloaded, then try loading from the
// file system cache
|| !api.previously_reloaded_packages.lock().insert(name.to_string())
@@ -175,8 +154,21 @@ impl CliNpmRegistryApiInner {
}
}
- fn force_reload(&self) -> bool {
- self.force_reload_flag.is_raised()
+ fn mark_force_reload(&self) -> bool {
+ // never force reload the registry information if reloading
+ // is disabled or if we're already reloading
+ if matches!(
+ self.cache.cache_setting(),
+ CacheSetting::Only | CacheSetting::ReloadAll
+ ) {
+ return false;
+ }
+ if self.force_reload_flag.raise() {
+ self.clear_memory_cache();
+ true
+ } else {
+ false
+ }
}
async fn load_file_cached_package_info(
@@ -205,16 +197,4 @@ impl CliNpmRegistryApiInner {
fn clear_memory_cache(&self) {
self.mem_cache.lock().clear();
}
-
- pub fn get_cached_package_info(
- &self,
- name: &str,
- ) -> Option<Arc<NpmPackageInfo>> {
- let mem_cache = self.mem_cache.lock();
- if let Some(CacheItem::Resolved(maybe_info)) = mem_cache.get(name) {
- maybe_info.clone()
- } else {
- None
- }
- }
}