npm-pd
Version:
A beautiful CLI dashboard for NPM publishers
59 lines (49 loc) • 1.99 kB
JavaScript
exports.__esModule = true;
exports.communityInterest = communityInterest;
exports.downloadsAcceleration = downloadsAcceleration;
var _lodash = require("lodash");
var _moment = _interopRequireDefault(require("moment"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function communityInterest(collected) {
return {
starsCount: (collected.github ? collected.github.starsCount : 0) + (collected.npm ? collected.npm.starsCount : 0),
forksCount: collected.github ? collected.github.forksCount : 0,
subscribersCount: collected.github ? collected.github.subscribersCount : 0,
contributorsCount: collected.github ? (collected.github.contributors || []).length : 0
};
}
function downloadsAcceleration(collected) {
var downloads = collected.npm && collected.npm.downloads;
if (!downloads) {
return {
shortTermAcceleration: 0,
midTermAcceleration: 0,
longTermAcceleration: 0
};
}
var range30 = (0, _lodash.find)(downloads, function (range) {
return _moment["default"].utc(range.to).diff(range.from, 'd') === 30;
});
var range90 = (0, _lodash.find)(downloads, function (range) {
return _moment["default"].utc(range.to).diff(range.from, 'd') === 90;
});
var range180 = (0, _lodash.find)(downloads, function (range) {
return _moment["default"].utc(range.to).diff(range.from, 'd') === 180;
});
var range365 = (0, _lodash.find)(downloads, function (range) {
return _moment["default"].utc(range.to).diff(range.from, 'd') === 365;
});
if (!range30 || !range90 || !range180 || !range365) {
throw new Error('Could not find entry in downloads');
}
var mean30 = range30.count / 30;
var mean90 = range90.count / 90;
var mean180 = range180.count / 180;
var mean365 = range365.count / 365;
return {
shortTermAcceleration: mean30 - mean90,
midTermAcceleration: mean90 - mean180,
longTermAcceleration: mean180 - mean365
};
}
;