npm-count
Version:
a npm/download-counts wrapper
57 lines (42 loc) • 1.5 kB
JavaScript
;
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'];