From 136dce67cec749dce5989ea29e88359ef79a0045 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Fri, 14 Apr 2023 16:22:33 -0400 Subject: refactor: break up `ProcState` (#18707) 1. Breaks up functionality within `ProcState` into several other structs to break out the responsibilities (`ProcState` is only a data struct now). 2. Moves towards being able to inject dependencies more easily and have functionality only require what it needs. 3. Exposes `Arc` around the "service structs" instead of it being embedded within them. The idea behind embedding them was to reduce the verbosity of needing to pass around `Arc<...>`, but I don't think it was exactly working and as we move more of these structs to be more injectable I don't think the extra verbosity will be a big deal. --- cli/npm/resolvers/global.rs | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) (limited to 'cli/npm/resolvers/global.rs') diff --git a/cli/npm/resolvers/global.rs b/cli/npm/resolvers/global.rs index 810548e98..66935380f 100644 --- a/cli/npm/resolvers/global.rs +++ b/cli/npm/resolvers/global.rs @@ -4,6 +4,7 @@ use std::path::Path; use std::path::PathBuf; +use std::sync::Arc; use async_trait::async_trait; use deno_ast::ModuleSpecifier; @@ -25,18 +26,18 @@ use super::common::types_package_name; use super::common::NpmPackageFsResolver; /// Resolves packages from the global npm cache. -#[derive(Debug, Clone)] +#[derive(Debug)] pub struct GlobalNpmPackageResolver { - cache: NpmCache, - resolution: NpmResolution, + cache: Arc, + resolution: Arc, registry_url: Url, } impl GlobalNpmPackageResolver { pub fn new( - cache: NpmCache, + cache: Arc, registry_url: Url, - resolution: NpmResolution, + resolution: Arc, ) -> Self { Self { cache, @@ -45,16 +46,6 @@ impl GlobalNpmPackageResolver { } } - fn package_folder(&self, id: &NpmPackageId) -> PathBuf { - let folder_id = self - .resolution - .resolve_package_cache_folder_id_from_id(id) - .unwrap(); - self - .cache - .package_folder_for_id(&folder_id, &self.registry_url) - } - fn resolve_types_package( &self, package_name: &str, @@ -77,11 +68,16 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { None } - fn resolve_package_folder_from_deno_module( - &self, - id: &NpmPackageId, - ) -> Result { - Ok(self.package_folder(id)) + fn package_folder(&self, id: &NpmPackageId) -> Result { + let folder_id = self + .resolution + .resolve_package_cache_folder_id_from_id(id) + .unwrap(); + Ok( + self + .cache + .package_folder_for_id(&folder_id, &self.registry_url), + ) } fn resolve_package_folder_from_package( @@ -106,7 +102,7 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { .resolution .resolve_package_from_package(name, &referrer_pkg_id)? }; - Ok(self.package_folder(&pkg.pkg_id)) + self.package_folder(&pkg.pkg_id) } fn resolve_package_folder_from_specifier( @@ -124,11 +120,6 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { ) } - fn package_size(&self, id: &NpmPackageId) -> Result { - let package_folder = self.package_folder(id); - Ok(crate::util::fs::dir_size(&package_folder)?) - } - async fn cache_packages(&self) -> Result<(), AnyError> { cache_packages_in_resolver(self).await } -- cgit v1.2.3