| 12345678910111213141516171819202122232425 |
- const npmFetch = require('npm-registry-fetch')
- module.exports = async (npm, opts) => {
- const { registry } = opts
- // First, check if we have a user/pass-based auth
- const creds = npm.config.getCredentialsByURI(registry)
- if (creds.username) {
- return creds.username
- }
- // No username, but we have other credentials; fetch the username from registry
- if (creds.token || creds.certfile && creds.keyfile) {
- const registryData = await npmFetch.json('/-/whoami', { ...opts })
- if (typeof registryData?.username === 'string') {
- return registryData.username
- }
- }
- // At this point, even if they have a credentials object, it doesn't have a valid token.
- throw Object.assign(
- new Error('This command requires you to be logged in.'),
- { code: 'ENEEDAUTH' }
- )
- }
|