summaryrefslogtreecommitdiff
path: root/deps/npm/lib/stars.js
blob: ea3581f1d4b444755eef230727d48c0cd6ec33db (plain)
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 starts' on your own user account requires auth"), {
        code: 'ENEEDAUTH'
      })
    } else {
      throw err
    }
  }).nodeify(cb)
}