summaryrefslogtreecommitdiff
path: root/cli/npm/mod.rs
diff options
context:
space:
mode:
authorMarvin Hagemeister <marvin@deno.com>2024-10-24 20:03:56 +0200
committerGitHub <noreply@github.com>2024-10-24 20:03:56 +0200
commit5f0bb3c6f4328003012e98ba70ce18e4e2e842de (patch)
tree5d99b6f2868c70b105ca4ff83f2a7380f4da9ac5 /cli/npm/mod.rs
parentc71e020668b40666aecfdffb1dbf979abcb41958 (diff)
fix: `.npmrc` settings not being passed to install/add command (#26473)
We weren't passing the resolved npmrc settings to the install commands. This lead us to always fall back to the default registry url instead of using the one from npmrc. Fixes https://github.com/denoland/deno/issues/26139 Fixes https://github.com/denoland/deno/issues/26033 Fixes https://github.com/denoland/deno/issues/25924 Fixes https://github.com/denoland/deno/issues/25822 Fixes https://github.com/denoland/deno/issues/26152 --------- Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'cli/npm/mod.rs')
-rw-r--r--cli/npm/mod.rs25
1 files changed, 21 insertions, 4 deletions
diff --git a/cli/npm/mod.rs b/cli/npm/mod.rs
index 53baaf77b..f48f7a740 100644
--- a/cli/npm/mod.rs
+++ b/cli/npm/mod.rs
@@ -8,10 +8,12 @@ use std::path::Path;
use std::path::PathBuf;
use std::sync::Arc;
+use common::maybe_auth_header_for_npm_registry;
use dashmap::DashMap;
use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
use deno_core::serde_json;
+use deno_npm::npm_rc::ResolvedNpmRc;
use deno_npm::registry::NpmPackageInfo;
use deno_resolver::npm::ByonmNpmResolver;
use deno_resolver::npm::ByonmResolvePkgFolderFromDenoReqError;
@@ -19,10 +21,10 @@ use deno_runtime::deno_node::NodeRequireResolver;
use deno_runtime::ops::process::NpmProcessStateProvider;
use deno_semver::package::PackageNv;
use deno_semver::package::PackageReq;
+use managed::cache::registry_info::get_package_url;
use node_resolver::NpmResolver;
use thiserror::Error;
-use crate::args::npm_registry_url;
use crate::file_fetcher::FileFetcher;
pub use self::byonm::CliByonmNpmResolver;
@@ -115,14 +117,19 @@ pub struct NpmFetchResolver {
nv_by_req: DashMap<PackageReq, Option<PackageNv>>,
info_by_name: DashMap<String, Option<Arc<NpmPackageInfo>>>,
file_fetcher: Arc<FileFetcher>,
+ npmrc: Arc<ResolvedNpmRc>,
}
impl NpmFetchResolver {
- pub fn new(file_fetcher: Arc<FileFetcher>) -> Self {
+ pub fn new(
+ file_fetcher: Arc<FileFetcher>,
+ npmrc: Arc<ResolvedNpmRc>,
+ ) -> Self {
Self {
nv_by_req: Default::default(),
info_by_name: Default::default(),
file_fetcher,
+ npmrc,
}
}
@@ -157,11 +164,21 @@ impl NpmFetchResolver {
return info.value().clone();
}
let fetch_package_info = || async {
- let info_url = npm_registry_url().join(name).ok()?;
+ let info_url = get_package_url(&self.npmrc, name);
let file_fetcher = self.file_fetcher.clone();
+ let registry_config = self.npmrc.get_registry_config(name);
+ // TODO(bartlomieju): this should error out, not use `.ok()`.
+ let maybe_auth_header =
+ maybe_auth_header_for_npm_registry(registry_config).ok()?;
// spawn due to the lsp's `Send` requirement
let file = deno_core::unsync::spawn(async move {
- file_fetcher.fetch_bypass_permissions(&info_url).await.ok()
+ file_fetcher
+ .fetch_bypass_permissions_with_maybe_auth(
+ &info_url,
+ maybe_auth_header,
+ )
+ .await
+ .ok()
})
.await
.ok()??;