exports.downloads = function(req, res){ var repoName = req.params.repository; if(!repoName) res.json(500, { error: true, message: "not valid repository"}); var registry = npmStats(); registry.module(repoName).downloads(function(err, data){ if(err) res.json(400, { error: true, message: "api error", details: err}); else { if(req.query.checkItExists && (!data || data.length == 0)){ registry.module(repoName).info(function(err, data){ if(err) res.json({ error: true, message: (err.reason == 'missing' ? "The module is missing" : err.reason), details: err }); else { res.json(200, []); } }); } else { var mapped = []; for(var i = 0; i < data.length; i++) mapped.push([data[i].date, data[i].value]); res.json(mapped); } } }); };
exports.info = function(req, res){ var repoName = req.params.repository; if(!repoName) res.json(500, { error: true, message: "not valid repository"}); var registry = npmStats(); registry.module(repoName).info(function(err, data){ res.json(err ? err : data); }); };
exports.repositories = function(req, res){ var userName = req.params.username; if(!userName) res.json(500, { error: true, message: "not valid username"}); var registry = npmStats(); registry.user(userName).list(function(err, data){ if(err) res.json(400, { error: true, message: "api error", details: err}); else { var mapped = []; for(var i = 0; i < data.length; i++) if(data[i] && data[i] != '') mapped.push(data[i]); res.json(mapped); } }); };
function downloadRegistry (msg, respond) { var RegistryStream = NpmStats().list() var context = this var limit = parseInt(options.updaterLimit || 0, 10) var counter = 0 RegistryStream .pipe(JSONStream.parse('*')) .on('data', (pkgId) => { if (limit && counter >= limit) { context.log.info('Updater limit exceeded: ', counter, limit) return } context.log.info(`Add to execution queue module ${pkgId}`) queue.push({name: pkgId, context: context}, respond) counter++ }) respond(null, { message: 'downloading' }) }
var npmStats = require('npm-stats'); var _ = require('lodash'); var from = function(){ var d = new Date(); d.setHours(d.getHours() - 30); return d; }; var to = function(){ var d = new Date(); d.setHours(d.getHours() - 24); return d; }; var registry = npmStats(); var getUpdated = function(callback){ registry.listByDate({ since: from(), until: to() }, function(err, r){ if(err){ return callback(err); } var result = _(r) .chain() .map(function(item){ return item.name; }) .uniq() .value(); callback(null, result); });