From 2b2eebd583a156452f47e9ab7f19b0492c591dea Mon Sep 17 00:00:00 2001 From: Gustrb Date: Fri, 9 Jun 2023 15:41:18 -0300 Subject: perf(node): cache realpath_sync calls in read permission check (#19379) --- cli/npm/resolvers/global.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'cli/npm/resolvers/global.rs') diff --git a/cli/npm/resolvers/global.rs b/cli/npm/resolvers/global.rs index 10a17f690..ca84d7e8b 100644 --- a/cli/npm/resolvers/global.rs +++ b/cli/npm/resolvers/global.rs @@ -23,18 +23,18 @@ use crate::npm::resolution::NpmResolution; use crate::npm::resolvers::common::cache_packages; use crate::npm::NpmCache; -use super::common::ensure_registry_read_permission; use super::common::types_package_name; use super::common::NpmPackageFsResolver; +use super::common::RegistryReadPermissionChecker; /// Resolves packages from the global npm cache. #[derive(Debug)] pub struct GlobalNpmPackageResolver { - fs: Arc, cache: Arc, resolution: Arc, registry_url: Url, system_info: NpmSystemInfo, + registry_read_permission_checker: RegistryReadPermissionChecker, } impl GlobalNpmPackageResolver { @@ -46,11 +46,14 @@ impl GlobalNpmPackageResolver { system_info: NpmSystemInfo, ) -> Self { Self { - fs, - cache, + cache: cache.clone(), resolution, - registry_url, + registry_url: registry_url.clone(), system_info, + registry_read_permission_checker: RegistryReadPermissionChecker::new( + fs, + cache.registry_folder(®istry_url), + ), } } @@ -156,7 +159,8 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver { permissions: &dyn NodePermissions, path: &Path, ) -> Result<(), AnyError> { - let registry_path = self.cache.registry_folder(&self.registry_url); - ensure_registry_read_permission(&self.fs, permissions, ®istry_path, path) + self + .registry_read_permission_checker + .ensure_registry_read_permission(permissions, path) } } -- cgit v1.2.3