summaryrefslogtreecommitdiff
path: root/cli/npm/managed/resolvers
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-05-23 22:26:23 +0100
committerGitHub <noreply@github.com>2024-05-23 23:26:23 +0200
commit959739f609dddacde3bbe9ecede2f409214fb34c (patch)
tree04d1776efbd3561205829f78288d26b6e14c3429 /cli/npm/managed/resolvers
parent5de30c53239ac74843725d981afc0bb8c45bdf16 (diff)
FUTURE: initial support for .npmrc file (#23560)
This commit adds initial support for ".npmrc" files. Currently we only discover ".npmrc" files next to "package.json" files and discovering these files in user home dir is left for a follow up. This pass supports "_authToken" and "_auth" configuration for providing authentication. LSP support has been left for a follow up PR. Towards https://github.com/denoland/deno/issues/16105
Diffstat (limited to 'cli/npm/managed/resolvers')
-rw-r--r--cli/npm/managed/resolvers/common.rs11
-rw-r--r--cli/npm/managed/resolvers/global.rs51
-rw-r--r--cli/npm/managed/resolvers/local.rs36
-rw-r--r--cli/npm/managed/resolvers/mod.rs4
4 files changed, 25 insertions, 77 deletions
diff --git a/cli/npm/managed/resolvers/common.rs b/cli/npm/managed/resolvers/common.rs
index a326b562b..b010bdd7c 100644
--- a/cli/npm/managed/resolvers/common.rs
+++ b/cli/npm/managed/resolvers/common.rs
@@ -44,11 +44,6 @@ pub trait NpmPackageFsResolver: Send + Sync {
mode: NodeResolutionMode,
) -> Result<PathBuf, AnyError>;
- fn resolve_package_folder_from_specifier(
- &self,
- specifier: &ModuleSpecifier,
- ) -> Result<Option<PathBuf>, AnyError>;
-
fn resolve_package_cache_folder_id_from_specifier(
&self,
specifier: &ModuleSpecifier,
@@ -132,16 +127,12 @@ impl RegistryReadPermissionChecker {
pub async fn cache_packages(
packages: Vec<NpmResolutionPackage>,
cache: &Arc<NpmCache>,
- registry_url: &Url,
) -> Result<(), AnyError> {
let mut handles = Vec::with_capacity(packages.len());
for package in packages {
let cache = cache.clone();
- let registry_url = registry_url.clone();
let handle = spawn(async move {
- cache
- .ensure_package(&package.id.nv, &package.dist, &registry_url)
- .await
+ cache.ensure_package(&package.id.nv, &package.dist).await
});
handles.push(handle);
}
diff --git a/cli/npm/managed/resolvers/global.rs b/cli/npm/managed/resolvers/global.rs
index 4b3c9d613..cfc57e591 100644
--- a/cli/npm/managed/resolvers/global.rs
+++ b/cli/npm/managed/resolvers/global.rs
@@ -32,7 +32,6 @@ use super::common::RegistryReadPermissionChecker;
pub struct GlobalNpmPackageResolver {
cache: Arc<NpmCache>,
resolution: Arc<NpmResolution>,
- registry_url: Url,
system_info: NpmSystemInfo,
registry_read_permission_checker: RegistryReadPermissionChecker,
}
@@ -41,18 +40,16 @@ impl GlobalNpmPackageResolver {
pub fn new(
fs: Arc<dyn FileSystem>,
cache: Arc<NpmCache>,
- registry_url: Url,
resolution: Arc<NpmResolution>,
system_info: NpmSystemInfo,
) -> Self {
Self {
cache: cache.clone(),
resolution,
- registry_url: registry_url.clone(),
system_info,
registry_read_permission_checker: RegistryReadPermissionChecker::new(
fs,
- cache.registry_folder(&registry_url),
+ cache.root_folder(),
),
}
}
@@ -84,11 +81,7 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
.resolution
.resolve_pkg_cache_folder_id_from_pkg_id(id)
.unwrap();
- Ok(
- self
- .cache
- .package_folder_for_id(&folder_id, &self.registry_url),
- )
+ Ok(self.cache.package_folder_for_id(&folder_id))
}
fn resolve_package_folder_from_package(
@@ -99,7 +92,7 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
) -> Result<PathBuf, AnyError> {
let Some(referrer_pkg_id) = self
.cache
- .resolve_package_folder_id_from_specifier(referrer, &self.registry_url)
+ .resolve_package_folder_id_from_specifier(referrer)
else {
bail!("could not find npm package for '{}'", referrer);
};
@@ -119,32 +112,14 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
self.package_folder(&pkg.id)
}
- fn resolve_package_folder_from_specifier(
- &self,
- specifier: &ModuleSpecifier,
- ) -> Result<Option<PathBuf>, AnyError> {
- let Some(pkg_folder_id) = self
- .cache
- .resolve_package_folder_id_from_specifier(specifier, &self.registry_url)
- else {
- return Ok(None);
- };
- Ok(Some(
- self
- .cache
- .package_folder_for_id(&pkg_folder_id, &self.registry_url),
- ))
- }
-
fn resolve_package_cache_folder_id_from_specifier(
&self,
specifier: &ModuleSpecifier,
) -> Result<Option<NpmPackageCacheFolderId>, AnyError> {
Ok(
- self.cache.resolve_package_folder_id_from_specifier(
- specifier,
- &self.registry_url,
- ),
+ self
+ .cache
+ .resolve_package_folder_id_from_specifier(specifier),
)
}
@@ -153,19 +128,13 @@ impl NpmPackageFsResolver for GlobalNpmPackageResolver {
.resolution
.all_system_packages_partitioned(&self.system_info);
- cache_packages(
- package_partitions.packages,
- &self.cache,
- &self.registry_url,
- )
- .await?;
+ cache_packages(package_partitions.packages, &self.cache).await?;
// create the copy package folders
for copy in package_partitions.copy_packages {
- self.cache.ensure_copy_package(
- &copy.get_package_cache_folder_id(),
- &self.registry_url,
- )?;
+ self
+ .cache
+ .ensure_copy_package(&copy.get_package_cache_folder_id())?;
}
Ok(())
diff --git a/cli/npm/managed/resolvers/local.rs b/cli/npm/managed/resolvers/local.rs
index f8d69d148..9d0ca3f8c 100644
--- a/cli/npm/managed/resolvers/local.rs
+++ b/cli/npm/managed/resolvers/local.rs
@@ -58,7 +58,6 @@ pub struct LocalNpmPackageResolver {
cache: Arc<NpmCache>,
progress_bar: ProgressBar,
resolution: Arc<NpmResolution>,
- registry_url: Url,
root_node_modules_path: PathBuf,
root_node_modules_url: Url,
system_info: NpmSystemInfo,
@@ -70,7 +69,6 @@ impl LocalNpmPackageResolver {
fs: Arc<dyn deno_fs::FileSystem>,
cache: Arc<NpmCache>,
progress_bar: ProgressBar,
- registry_url: Url,
node_modules_folder: PathBuf,
resolution: Arc<NpmResolution>,
system_info: NpmSystemInfo,
@@ -80,7 +78,6 @@ impl LocalNpmPackageResolver {
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.clone(),
@@ -126,6 +123,17 @@ impl LocalNpmPackageResolver {
.map(Some)
.map_err(|err| err.into())
}
+
+ fn resolve_package_folder_from_specifier(
+ &self,
+ specifier: &ModuleSpecifier,
+ ) -> Result<Option<PathBuf>, AnyError> {
+ let Some(local_path) = self.resolve_folder_for_specifier(specifier)? else {
+ return Ok(None);
+ };
+ let package_root_path = self.resolve_package_root(&local_path);
+ Ok(Some(package_root_path))
+ }
}
#[async_trait]
@@ -202,17 +210,6 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver {
);
}
- fn resolve_package_folder_from_specifier(
- &self,
- specifier: &ModuleSpecifier,
- ) -> Result<Option<PathBuf>, AnyError> {
- let Some(local_path) = self.resolve_folder_for_specifier(specifier)? else {
- return Ok(None);
- };
- let package_root_path = self.resolve_package_root(&local_path);
- Ok(Some(package_root_path))
- }
-
fn resolve_package_cache_folder_id_from_specifier(
&self,
specifier: &ModuleSpecifier,
@@ -231,7 +228,6 @@ impl NpmPackageFsResolver for LocalNpmPackageResolver {
&self.resolution.snapshot(),
&self.cache,
&self.progress_bar,
- &self.registry_url,
&self.root_node_modules_path,
&self.system_info,
)
@@ -254,7 +250,6 @@ async fn sync_resolution_with_fs(
snapshot: &NpmResolutionSnapshot,
cache: &Arc<NpmCache>,
progress_bar: &ProgressBar,
- registry_url: &Url,
root_node_modules_dir_path: &Path,
system_info: &NpmSystemInfo,
) -> Result<(), AnyError> {
@@ -317,12 +312,9 @@ async fn sync_resolution_with_fs(
let pb = progress_bar.clone();
let cache = cache.clone();
- let registry_url = registry_url.clone();
let package = package.clone();
let handle = spawn(async move {
- cache
- .ensure_package(&package.id.nv, &package.dist, &registry_url)
- .await?;
+ cache.ensure_package(&package.id.nv, &package.dist).await?;
let pb_guard = pb.update_with_prompt(
ProgressMessagePrompt::Initialize,
&package.id.nv.to_string(),
@@ -332,8 +324,8 @@ async fn sync_resolution_with_fs(
join_package_name(&sub_node_modules, &package.id.nv.name);
fs::create_dir_all(&package_path)
.with_context(|| format!("Creating '{}'", folder_path.display()))?;
- let cache_folder = cache
- .package_folder_for_name_and_version(&package.id.nv, &registry_url);
+ let cache_folder =
+ cache.package_folder_for_name_and_version(&package.id.nv);
if hard_link_dir_recursive(&cache_folder, &package_path).is_err() {
// Fallback to copying the directory.
//
diff --git a/cli/npm/managed/resolvers/mod.rs b/cli/npm/managed/resolvers/mod.rs
index dfd291afc..d5472344a 100644
--- a/cli/npm/managed/resolvers/mod.rs
+++ b/cli/npm/managed/resolvers/mod.rs
@@ -7,7 +7,6 @@ mod local;
use std::path::PathBuf;
use std::sync::Arc;
-use deno_core::url::Url;
use deno_npm::NpmSystemInfo;
use deno_runtime::deno_fs::FileSystem;
@@ -25,7 +24,6 @@ pub fn create_npm_fs_resolver(
fs: Arc<dyn FileSystem>,
cache: Arc<NpmCache>,
progress_bar: &ProgressBar,
- registry_url: Url,
resolution: Arc<NpmResolution>,
maybe_node_modules_path: Option<PathBuf>,
system_info: NpmSystemInfo,
@@ -35,7 +33,6 @@ pub fn create_npm_fs_resolver(
fs,
cache,
progress_bar.clone(),
- registry_url,
node_modules_folder,
resolution,
system_info,
@@ -43,7 +40,6 @@ pub fn create_npm_fs_resolver(
None => Arc::new(GlobalNpmPackageResolver::new(
fs,
cache,
- registry_url,
resolution,
system_info,
)),