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/installer.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'cli/npm/installer.rs') diff --git a/cli/npm/installer.rs b/cli/npm/installer.rs index 9e5fcc4c3..bdcafb542 100644 --- a/cli/npm/installer.rs +++ b/cli/npm/installer.rs @@ -19,8 +19,8 @@ use super::NpmResolution; #[derive(Debug)] struct PackageJsonDepsInstallerInner { has_installed_flag: AtomicFlag, - npm_registry_api: CliNpmRegistryApi, - npm_resolution: NpmResolution, + npm_registry_api: Arc, + npm_resolution: Arc, package_deps: PackageJsonDeps, } @@ -58,22 +58,20 @@ impl PackageJsonDepsInstallerInner { } /// Holds and controls installing dependencies from package.json. -#[derive(Debug, Clone, Default)] -pub struct PackageJsonDepsInstaller(Option>); +#[derive(Debug, Default)] +pub struct PackageJsonDepsInstaller(Option); impl PackageJsonDepsInstaller { pub fn new( - npm_registry_api: CliNpmRegistryApi, - npm_resolution: NpmResolution, + npm_registry_api: Arc, + npm_resolution: Arc, deps: Option, ) -> Self { - Self(deps.map(|package_deps| { - Arc::new(PackageJsonDepsInstallerInner { - has_installed_flag: Default::default(), - npm_registry_api, - npm_resolution, - package_deps, - }) + Self(deps.map(|package_deps| PackageJsonDepsInstallerInner { + has_installed_flag: Default::default(), + npm_registry_api, + npm_resolution, + package_deps, })) } -- cgit v1.2.3