diff options
author | Gustrb <gustavo@minhavisita.com.br> | 2023-06-09 15:41:18 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-09 14:41:18 -0400 |
commit | 2b2eebd583a156452f47e9ab7f19b0492c591dea (patch) | |
tree | 4a2208baae9d20c3414f4c6eb264fd8ba4b465d0 /cli/npm/resolvers/global.rs | |
parent | ff690b0ab44d1d8d8e5ecbc320a5bf752d5feacc (diff) |
perf(node): cache realpath_sync calls in read permission check (#19379)
Diffstat (limited to 'cli/npm/resolvers/global.rs')
-rw-r--r-- | cli/npm/resolvers/global.rs | 18 |
1 files changed, 11 insertions, 7 deletions
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<dyn FileSystem>, cache: Arc<NpmCache>, resolution: Arc<NpmResolution>, 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) } } |