npm-registry-fetch
Advanced tools
Comparing version 16.0.0 to 16.1.0
@@ -7,4 +7,4 @@ 'use strict' | ||
// Find the longest registry key that is used for some kind of auth | ||
// in the options. | ||
const regKeyFromURI = (uri, opts) => { | ||
// in the options. Returns the registry key and the auth config. | ||
const regFromURI = (uri, opts) => { | ||
const parsed = new URL(uri) | ||
@@ -18,5 +18,6 @@ // try to find a config key indicating we have auth for this registry | ||
while (regKey.length > '//'.length) { | ||
const authKey = hasAuth(regKey, opts) | ||
// got some auth for this URI | ||
if (hasAuth(regKey, opts)) { | ||
return regKey | ||
if (authKey) { | ||
return { regKey, authKey } | ||
} | ||
@@ -28,10 +29,26 @@ | ||
} | ||
return { regKey: false, authKey: null } | ||
} | ||
const hasAuth = (regKey, opts) => ( | ||
opts[`${regKey}:_authToken`] || | ||
opts[`${regKey}:_auth`] || | ||
opts[`${regKey}:username`] && opts[`${regKey}:_password`] || | ||
opts[`${regKey}:certfile`] && opts[`${regKey}:keyfile`] | ||
) | ||
// Not only do we want to know if there is auth, but if we are calling `npm | ||
// logout` we want to know what config value specifically provided it. This is | ||
// so we can look up where the config came from to delete it (i.e. user vs | ||
// project) | ||
const hasAuth = (regKey, opts) => { | ||
if (opts[`${regKey}:_authToken`]) { | ||
return '_authToken' | ||
} | ||
if (opts[`${regKey}:_auth`]) { | ||
return '_auth' | ||
} | ||
if (opts[`${regKey}:username`] && opts[`${regKey}:_password`]) { | ||
// 'password' can be inferred to also be present | ||
return 'username' | ||
} | ||
if (opts[`${regKey}:certfile`] && opts[`${regKey}:keyfile`]) { | ||
// 'keyfile' can be inferred to also be present | ||
return 'certfile' | ||
} | ||
return false | ||
} | ||
@@ -69,3 +86,3 @@ const sameHost = (a, b) => { | ||
} | ||
const regKey = regKeyFromURI(uri, forceAuth || opts) | ||
const { regKey, authKey } = regFromURI(uri, forceAuth || opts) | ||
@@ -75,2 +92,5 @@ // we are only allowed to use what's in forceAuth if specified | ||
return new Auth({ | ||
// if we force auth we don't want to refer back to anything in config | ||
regKey: false, | ||
authKey: null, | ||
scopeAuthKey: null, | ||
@@ -96,4 +116,4 @@ token: forceAuth._authToken || forceAuth.token, | ||
// and warn the user if we get a 4xx error on it. | ||
const scopeAuthKey = regKeyFromURI(registry, opts) | ||
return new Auth({ scopeAuthKey }) | ||
const { regKey: scopeAuthKey, authKey: _authKey } = regFromURI(registry, opts) | ||
return new Auth({ scopeAuthKey, regKey: scopeAuthKey, authKey: _authKey }) | ||
} | ||
@@ -113,2 +133,4 @@ } | ||
scopeAuthKey: null, | ||
regKey, | ||
authKey, | ||
token, | ||
@@ -124,4 +146,18 @@ auth, | ||
class Auth { | ||
constructor ({ token, auth, username, password, scopeAuthKey, certfile, keyfile }) { | ||
constructor ({ | ||
token, | ||
auth, | ||
username, | ||
password, | ||
scopeAuthKey, | ||
certfile, | ||
keyfile, | ||
regKey, | ||
authKey, | ||
}) { | ||
// same as regKey but only present for scoped auth. Should have been named scopeRegKey | ||
this.scopeAuthKey = scopeAuthKey | ||
// `${regKey}:${authKey}` will get you back to the auth config that gave us auth | ||
this.regKey = regKey | ||
this.authKey = authKey | ||
this.token = null | ||
@@ -128,0 +164,0 @@ this.auth = null |
@@ -169,2 +169,4 @@ 'use strict' | ||
module.exports.getAuth = getAuth | ||
module.exports.json = fetchJSON | ||
@@ -171,0 +173,0 @@ function fetchJSON (uri, opts) { |
{ | ||
"name": "npm-registry-fetch", | ||
"version": "16.0.0", | ||
"version": "16.1.0", | ||
"description": "Fetch-based http client for use with npm registry APIs", | ||
@@ -44,3 +44,3 @@ "main": "lib", | ||
"@npmcli/eslint-config": "^4.0.0", | ||
"@npmcli/template-oss": "4.18.0", | ||
"@npmcli/template-oss": "4.19.0", | ||
"cacache": "^18.0.0", | ||
@@ -65,11 +65,5 @@ "nock": "^13.2.4", | ||
"//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", | ||
"version": "4.18.0", | ||
"publish": "true", | ||
"ciVersions": [ | ||
"16.14.0", | ||
"16.x", | ||
"18.0.0", | ||
"18.x" | ||
] | ||
"version": "4.19.0", | ||
"publish": "true" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
39655
590
77
1
1
1
7