UNPKG

verdaccio

Version:

A lightweight private npm proxy registry

83 lines (66 loc) 2.62 kB
"use strict"; 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); } }); }