UNPKG

npm-pd

Version:

A beautiful CLI dashboard for NPM publishers

59 lines (49 loc) 1.99 kB
"use strict"; 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 }; }