forked from npm/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
stars.js
37 lines (33 loc) · 1.03 KB
/
stars.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'use strict'
const BB = require('bluebird')
const npmConfig = require('./config/figgy-config.js')
const fetch = require('libnpm/fetch')
const log = require('npmlog')
const output = require('./utils/output.js')
const whoami = require('./whoami.js')
stars.usage = 'npm stars [<user>]'
module.exports = stars
function stars ([user], cb) {
const opts = npmConfig()
return BB.try(() => {
return (user ? BB.resolve(user) : whoami([], true, () => {})).then(usr => {
return fetch.json('/-/_view/starredByUser', opts.concat({
query: {key: `"${usr}"`} // WHY. WHY THE ""?!
}))
}).then(data => data.rows).then(stars => {
if (stars.length === 0) {
log.warn('stars', 'user has not starred any packages.')
} else {
stars.forEach(s => output(s.value))
}
})
}).catch(err => {
if (err.code === 'ENEEDAUTH') {
throw Object.assign(new Error("'npm stars' on your own user account requires auth"), {
code: 'ENEEDAUTH'
})
} else {
throw err
}
}).nodeify(cb)
}