verdaccio
Version:
A lightweight private npm proxy registry
83 lines (66 loc) • 2.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createBanner = createBanner;
exports.createErrorBanner = createErrorBanner;
exports.verdaccioUpdateBanner = verdaccioUpdateBanner;
var _request = _interopRequireDefault(require("request"));
var _semver = _interopRequireDefault(require("semver"));
var _kleur = require("kleur");
var _lodash = _interopRequireDefault(require("lodash"));
var _constants = require("./constants");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @prettier
*
*/
const VERDACCIO_LATEST_REGISTRY_URL = `${_constants.DEFAULT_REGISTRY}/verdaccio/latest`;
/**
* Creates NPM update banner using kleur
*/
function createBanner(currentVersion, newVersion, releaseType) {
const changelog = `${_constants.UPDATE_BANNER.CHANGELOG_URL}v${newVersion}`;
const versionUpdate = `${(0, _kleur.bold)().red(currentVersion)} → ${(0, _kleur.bold)().green(newVersion)}`;
const banner = `
${(0, _kleur.white)().bold('A new ' + _lodash.default.upperCase(releaseType) + ' version of Verdaccio is available. ' + versionUpdate)}
${(0, _kleur.white)().bold('Run ' + (0, _kleur.green)('npm install -g verdaccio') + ' to update.')}
${(0, _kleur.white)().bold('Registry: ' + _constants.DEFAULT_REGISTRY)}
${(0, _kleur.blue)().bold('Changelog: ' + changelog)}
`;
return banner;
}
/**
* creates error banner
*/
function createErrorBanner(message) {
const banner = `
${(0, _kleur.red)().bold('Unable to check verdaccio version on ' + _constants.DEFAULT_REGISTRY)}
${(0, _kleur.red)().bold('Error: ' + message)}
`;
return banner;
}
/**
* Show verdaccio update banner on start
*/
function verdaccioUpdateBanner(pkgVersion) {
(0, _request.default)(VERDACCIO_LATEST_REGISTRY_URL, function (error = null, response = {}) {
if (!error && response.statusCode === _constants.HTTP_STATUS.OK && response.body) {
// In case, NPM does not returns version, keeping version equals to
// verdaccio version.
const {
version = pkgVersion
} = JSON.parse(response.body);
const releaseType = _semver.default.diff(version, pkgVersion);
if (releaseType && _semver.default.gt(version, pkgVersion)) {
const banner = createBanner(pkgVersion, version, releaseType);
/* eslint-disable-next-line */
console.log(banner);
}
} else {
const errorBanner = createErrorBanner(JSON.stringify(error));
/* eslint-disable-next-line */
console.log(errorBanner);
}
});
}