summaryrefslogtreecommitdiff
path: root/cli/npm/common.rs
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/common.rs
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/common.rs')
-rw-r--r--cli/npm/common.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/cli/npm/common.rs b/cli/npm/common.rs
index e40924838..bf45aa5b8 100644
--- a/cli/npm/common.rs
+++ b/cli/npm/common.rs
@@ -1,5 +1,8 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+use deno_npm::npm_rc::RegistryConfig;
+use reqwest::header;
+
/// Gets the corresponding @types package for the provided package name.
pub fn types_package_name(package_name: &str) -> String {
debug_assert!(!package_name.starts_with("@types/"));
@@ -8,6 +11,27 @@ pub fn types_package_name(package_name: &str) -> String {
format!("@types/{}", package_name.replace('/', "__"))
}
+// TODO(bartlomieju): support more auth methods besides token and basic auth
+pub fn maybe_auth_header_for_npm_registry(
+ registry_config: &RegistryConfig,
+) -> Option<(header::HeaderName, header::HeaderValue)> {
+ if let Some(token) = registry_config.auth_token.as_ref() {
+ return Some((
+ header::AUTHORIZATION,
+ header::HeaderValue::from_str(&format!("Bearer {}", token)).unwrap(),
+ ));
+ }
+
+ if let Some(auth) = registry_config.auth.as_ref() {
+ return Some((
+ header::AUTHORIZATION,
+ header::HeaderValue::from_str(&format!("Basic {}", auth)).unwrap(),
+ ));
+ }
+
+ None
+}
+
#[cfg(test)]
mod test {
use super::types_package_name;