UNPKG

npm-count

Version:

a npm/download-counts wrapper

57 lines (42 loc) 1.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _request = require('request'); var _request2 = _interopRequireDefault(_request); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _immutable = require('immutable'); var _immutable2 = _interopRequireDefault(_immutable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // private var requestAsync = _bluebird2.default.promisify(_request2.default); // dependencies var api = 'https://www.npmjs.com/profile'; /** * fetch the author's publications * * @module fetchPublications * @param <string> author - npm user name * @returns {promise<collection>} author's publications summary * @see https://www.npmjs.com/profile/substack/packages?offset=0 */ exports.default = function (author) { return _bluebird2.default.all(_immutable2.default.Range(0, 11).map(function (offset) { return requestAsync(api + '/' + author + '/packages?offset=' + offset, { json: true, gzip: true }).then(function (_ref) { var statusCode = _ref.statusCode; var body = _ref.body; if (typeof body === 'string') { return _bluebird2.default.reject(new Error(statusCode + ': ' + body)); } return body.items; }); })).then(function (pages) { return pages.reduce(function (prev, current) { return current.concat(prev); }, []); }); }; module.exports = exports['default'];