diff options
Diffstat (limited to 'cli/factory.rs')
-rw-r--r-- | cli/factory.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cli/factory.rs b/cli/factory.rs index fd33d295c..2d685ce76 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -9,6 +9,7 @@ use crate::args::PackageJsonDepsProvider; use crate::args::StorageKeyResolver; use crate::args::TsConfigType; use crate::cache::Caches; +use crate::cache::CodeCache; use crate::cache::DenoDir; use crate::cache::DenoDirProvider; use crate::cache::EmitCache; @@ -178,6 +179,7 @@ struct CliFactoryServices { cjs_resolutions: Deferred<Arc<CjsResolutionStore>>, cli_node_resolver: Deferred<Arc<CliNodeResolver>>, feature_checker: Deferred<Arc<FeatureChecker>>, + code_cache: Deferred<Arc<CodeCache>>, } pub struct CliFactory { @@ -226,6 +228,9 @@ impl CliFactory { _ = caches.fast_check_db(); _ = caches.type_checking_cache_db(); } + if self.options.code_cache_enabled() { + _ = caches.code_cache_db(); + } } _ => {} } @@ -534,6 +539,12 @@ impl CliFactory { }) } + pub fn code_cache(&self) -> Result<&Arc<CodeCache>, AnyError> { + self.services.code_cache.get_or_try_init(|| { + Ok(Arc::new(CodeCache::new(self.caches()?.code_cache_db()))) + }) + } + pub fn parsed_source_cache(&self) -> &Arc<ParsedSourceCache> { self .services @@ -790,6 +801,12 @@ impl CliFactory { fs.clone(), cli_node_resolver.clone(), ), + if self.options.code_cache_enabled() { + Some(self.code_cache()?.clone()) + } else { + None + }, + self.module_info_cache()?.clone(), )), self.root_cert_store_provider().clone(), self.fs().clone(), @@ -804,6 +821,11 @@ impl CliFactory { // self.options.disable_deprecated_api_warning, true, self.options.verbose_deprecated_api_warning, + if self.options.code_cache_enabled() { + Some(self.code_cache()?.clone()) + } else { + None + }, )) } |