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/local.rs | |
parent | ff690b0ab44d1d8d8e5ecbc320a5bf752d5feacc (diff) |
perf(node): cache realpath_sync calls in read permission check (#19379)
Diffstat (limited to 'cli/npm/resolvers/local.rs')
-rw-r--r-- | cli/npm/resolvers/local.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs index a708f8691..976038404 100644 --- a/cli/npm/resolvers/local.rs +++ b/cli/npm/resolvers/local.rs @@ -41,9 +41,9 @@ use crate::npm::NpmCache; use crate::util::fs::copy_dir_recursive; use crate::util::fs::hard_link_dir_recursive; -use super::common::ensure_registry_read_permission; use super::common::types_package_name; use super::common::NpmPackageFsResolver; +use super::common::RegistryReadPermissionChecker; /// Resolver that creates a local node_modules directory /// and resolves packages from it. @@ -57,6 +57,7 @@ pub struct LocalNpmPackageResolver { root_node_modules_path: PathBuf, root_node_modules_url: Url, system_info: NpmSystemInfo, + registry_read_permission_checker: RegistryReadPermissionChecker, } impl LocalNpmPackageResolver { @@ -70,15 +71,19 @@ impl LocalNpmPackageResolver { system_info: NpmSystemInfo, ) -> Self { Self { - fs, + fs: fs.clone(), cache, progress_bar, resolution, registry_url, root_node_modules_url: Url::from_directory_path(&node_modules_folder) .unwrap(), - root_node_modules_path: node_modules_folder, + root_node_modules_path: node_modules_folder.clone(), system_info, + registry_read_permission_checker: RegistryReadPermissionChecker::new( + fs, + node_modules_folder, + ), } } @@ -227,12 +232,9 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver { permissions: &dyn NodePermissions, path: &Path, ) -> Result<(), AnyError> { - ensure_registry_read_permission( - &self.fs, - permissions, - &self.root_node_modules_path, - path, - ) + self + .registry_read_permission_checker + .ensure_registry_read_permission(permissions, path) } } |