d2-ui
Version:
170 lines (125 loc) • 4.34 kB
JavaScript
exports.__esModule = true;
var _regenerator = require("babel-runtime/regenerator");
var _regenerator2 = _interopRequireDefault(_regenerator);
var _getIterator2 = require("babel-runtime/core-js/get-iterator");
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _promise = require("babel-runtime/core-js/promise");
var _promise2 = _interopRequireDefault(_promise);
var _request = require("request");
var _request2 = _interopRequireDefault(_request);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var cache = {};
function getInfo(packageName) {
if (cache[packageName]) {
return cache[packageName];
} else {
return cache[packageName] = new _promise2.default(function (resolve, reject) {
_request2.default.get({
url: "https://registry.npmjs.org/" + packageName + "/latest",
json: true
}, function (err, res, body) {
if (err) {
reject(err);
} else {
resolve(cache[packageName] = body);
}
});
});
}
}
exports.default = function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(packages) {
var filteredPackages, promises, _iterator, _isArray, _i, _ref2, _pkg, infos, messages, i, info, pkg;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
filteredPackages = [];
promises = [];
_iterator = packages, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);
case 3:
if (!_isArray) {
_context.next = 9;
break;
}
if (!(_i >= _iterator.length)) {
_context.next = 6;
break;
}
return _context.abrupt("break", 20);
case 6:
_ref2 = _iterator[_i++];
_context.next = 13;
break;
case 9:
_i = _iterator.next();
if (!_i.done) {
_context.next = 12;
break;
}
return _context.abrupt("break", 20);
case 12:
_ref2 = _i.value;
case 13:
_pkg = _ref2;
if (!(_pkg.name.indexOf("babel-") !== 0)) {
_context.next = 16;
break;
}
return _context.abrupt("continue", 18);
case 16:
promises.push(getInfo(_pkg.name));
filteredPackages.push(_pkg);
case 18:
_context.next = 3;
break;
case 20:
_context.next = 22;
return _promise2.default.all(promises);
case 22:
infos = _context.sent;
messages = [];
i = 0;
case 25:
if (!(i < infos.length)) {
_context.next = 34;
break;
}
info = infos[i];
pkg = filteredPackages[i];
if (!(pkg.name === "babel-runtime")) {
_context.next = 30;
break;
}
return _context.abrupt("continue", 31);
case 30:
if (info.version !== pkg.version) {
messages.push(pkg.name + " - Latest is " + info.version + ". Local version is " + pkg.version);
}
case 31:
i++;
_context.next = 25;
break;
case 34:
if (!messages.length) {
_context.next = 38;
break;
}
return _context.abrupt("return", [false, "We found some outdated packages:\n\n- " + messages.join("\n- ")]);
case 38:
return _context.abrupt("return", [true, "All babel packages appear to be up to date"]);
case 39:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}();
module.exports = exports["default"];
;