@dependabot/yarn-lib
Version:
📦🐈 Fast, reliable, and secure dependency management.
167 lines (135 loc) • 4.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.run = exports.getToken = undefined;
var _asyncToGenerator2;
function _load_asyncToGenerator() {
return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator'));
}
let getCredentials = (() => {
var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter) {
var _config$registries$ya = config.registries.yarn.config;
let username = _config$registries$ya.username,
email = _config$registries$ya.email;
if (username) {
reporter.info(`${reporter.lang('npmUsername')}: ${username}`);
} else {
username = yield reporter.question(reporter.lang('npmUsername'));
if (!username) {
return null;
}
}
if (email) {
reporter.info(`${reporter.lang('npmEmail')}: ${email}`);
} else {
email = yield reporter.question(reporter.lang('npmEmail'));
if (!email) {
return null;
}
}
yield config.registries.yarn.saveHomeConfig({ username, email });
return { username, email };
});
return function getCredentials(_x, _x2) {
return _ref.apply(this, arguments);
};
})();
let getToken = exports.getToken = (() => {
var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, name = '', flags = {}) {
const auth = config.registries.npm.getAuth(name);
if (auth) {
config.registries.npm.setToken(auth);
return function revoke() {
reporter.info(reporter.lang('notRevokingConfigToken'));
return Promise.resolve();
};
}
const env = process.env.YARN_AUTH_TOKEN || process.env.NPM_AUTH_TOKEN;
if (env) {
config.registries.npm.setToken(`Bearer ${env}`);
return function revoke() {
reporter.info(reporter.lang('notRevokingEnvToken'));
return Promise.resolve();
};
}
// make sure we're not running in non-interactive mode before asking for login
if (flags.nonInteractive || config.nonInteractive) {
throw new (_errors || _load_errors()).MessageError(reporter.lang('nonInteractiveNoToken'));
}
//
const creds = yield getCredentials(config, reporter);
if (!creds) {
reporter.warn(reporter.lang('loginAsPublic'));
return function revoke() {
reporter.info(reporter.lang('noTokenToRevoke'));
return Promise.resolve();
};
}
const username = creds.username,
email = creds.email;
const password = yield reporter.question(reporter.lang('npmPassword'), {
password: true,
required: true
});
//
const userobj = {
_id: `org.couchdb.user:${username}`,
name: username,
password,
email,
type: 'user',
roles: [],
date: new Date().toISOString()
};
//
const res = yield config.registries.npm.request(`-/user/org.couchdb.user:${encodeURIComponent(username)}`, {
method: 'PUT',
body: userobj,
auth: { username, password, email }
});
if (res && res.ok) {
reporter.success(reporter.lang('loggedIn'));
const token = res.token;
config.registries.npm.setToken(`Bearer ${token}`);
return (() => {
var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () {
reporter.success(reporter.lang('revokedToken'));
yield config.registries.npm.request(`-/user/token/${token}`, {
method: 'DELETE'
});
});
function revoke() {
return _ref3.apply(this, arguments);
}
return revoke;
})();
} else {
throw new (_errors || _load_errors()).MessageError(reporter.lang('incorrectCredentials'));
}
});
return function getToken(_x3, _x4) {
return _ref2.apply(this, arguments);
};
})();
let run = exports.run = (() => {
var _ref4 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) {
yield getCredentials(config, reporter);
});
return function run(_x5, _x6, _x7, _x8) {
return _ref4.apply(this, arguments);
};
})();
exports.hasWrapper = hasWrapper;
exports.setFlags = setFlags;
var _errors;
function _load_errors() {
return _errors = require('../../errors.js');
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function hasWrapper(commander, args) {
return true;
}
function setFlags(commander) {
commander.description('Stores registry username and email.');
}