UNPKG

1.12 kBJavaScriptView Raw
1/*!
2 * get-pkgs <https://github.com/jonschlinkert/get-pkgs>
3 *
4 * Copyright (c) 2014-2015, Jon Schlinkert.
5 * Licensed under the MIT License.
6 */
7
8'use strict';
9
10var bold = require('ansi-bold');
11var red = require('ansi-red');
12var async = require('async');
13var filter = require('filter-object');
14var request = require('min-request');
15
16module.exports = function get(repos, pattern, cb) {
17 if (typeof pattern === 'function') {
18 cb = pattern; pattern = '*';
19 }
20
21 async.reduce(arrayify(repos), [], function(acc, repo, next) {
22 pkg(repo, 'latest', function (err, json) {
23 if (err) {
24 console.log(red(err + ': "') + bold(repo) + '"');
25 return next(err);
26 }
27 next(null, acc.concat(filter(json, pattern)));
28 });
29 }, cb);
30};
31
32function arrayify(val) {
33 return !Array.isArray(val) ? [val] : val;
34}
35
36function pkg(name, version, cb) {
37 var url = 'https://registry.npmjs.org/' + name + '/';
38
39 if (typeof version !== 'string') {
40 cb = version;
41 version = '';
42 }
43 request(url + version, {}, function (err, res) {
44 if (err) return cb(err);
45 cb(null, JSON.parse(res.body));
46 });
47}