UNPKG

npm-pd

Version:

A beautiful CLI dashboard for NPM publishers

144 lines (119 loc) 4.85 kB
"use strict"; exports.__esModule = true; exports.formatPublisher = formatPublisher; var _ora = _interopRequireDefault(require("ora")); var _cliTable = _interopRequireDefault(require("cli-table3")); var _npmsIoClient = require("npms-io-client"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var sorters = { name: function name(a, b) { return b["package"].name.localeCompare(a["package"].name); }, version: function version(a, b) { return b["package"].version.localeCompare(a["package"].version); }, date: function date(a, b) { return new Date(a["package"].date).getTime() - new Date(b["package"].date).getTime(); }, quality: function quality(a, b) { return a.score.detail.quality - b.score.detail.quality; }, popularity: function popularity(a, b) { return a.score.detail.popularity - b.score.detail.popularity; }, maintenance: function maintenance(a, b) { return a.score.detail.maintenance - b.score.detail.maintenance; }, score: function score(a, b) { return a.score["final"] - b.score["final"]; } }; function getScope(org) { if (org == null ? void 0 : org.startsWith("@")) { return org.slice(1); } else { return org; } } var pageSize = 250; function nextPage(query, options, pageNum) { if (pageNum === void 0) { pageNum = 0; } return new Promise(function (resolve) { (0, _npmsIoClient.getSearch)(query, pageNum * pageSize, pageSize).then(function (_ref) { var results = _ref.results; if (results.length < pageSize) { resolve(results); } else { nextPage(query, options, pageNum + 1).then(function (next) { resolve(results.concat(next)); }); } }); }); } function sort(packages, options) { var _options$sort; var sorted = packages.sort(sorters[(_options$sort = options.sort) != null ? _options$sort : "date"]); if (options.reverse) { return sorted; } else { return sorted.reverse(); } } function filter(packages, options) { if (options.org) { return packages.filter(function (result) { return result["package"].scope === getScope(options.org); }); } else { return packages; } } function limit(packages, options) { if (options.limit) { return packages.slice(0, options.limit); } else { return packages; } } function getPublisher(_x, _x2, _x3) { return _getPublisher.apply(this, arguments); } function _getPublisher() { _getPublisher = _asyncToGenerator(function* (name, claim, options) { var _nextPage; return nextPage((_nextPage = {}, _nextPage[claim] = name, _nextPage), options).then(function (results) { return limit(sort(filter(results, options), options), options); }); }); return _getPublisher.apply(this, arguments); } function setDefaults(options) { return _extends({ deprecated: false }, options); } function formatPublisher(_x4, _x5, _x6) { return _formatPublisher.apply(this, arguments); } function _formatPublisher() { _formatPublisher = _asyncToGenerator(function* (name, claim, options) { var spinner = (0, _ora["default"])("Fetching packages...").start(); getPublisher(name, claim, setDefaults(options)).then(function (rows) { var table = new _cliTable["default"]({ head: ["Last Update", "Name", "Version", "Quality", "Popularity", "Maintenance", "Score"] }); table.push.apply(table, rows.map(function (row) { return [new Date(row["package"].date).toLocaleDateString(), row["package"].name, row["package"].version, row.score.detail.quality.toFixed(4), row.score.detail.popularity.toFixed(4), row.score.detail.maintenance.toFixed(4), row.score["final"].toFixed(4)]; })); spinner.stop(); console.log(table.toString()); }); }); return _formatPublisher.apply(this, arguments); }