Welcome to mirror list, hosted at ThFree Co, Russian Federation.

installed-deep.js « completion « utils « lib - github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5fb67d263f12e7ec880cca2d36827c50cbc0fe8f (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
38
39
40
41
42
43
44
45
46
47
48
49
50
module.exports = installedDeep

var npm = require("../../npm.js")
  , readInstalled = require("read-installed")

function installedDeep (opts, cb) {
  var local
    , global
    , depth = npm.config.get("depth")
    , opt = { depth: depth, dev: true }

  if (npm.config.get("global")) local = [], next()
  else readInstalled(npm.prefix, opt, function (er, data) {
    local = getNames(data || {})
    next()
  })

  readInstalled(npm.config.get("prefix"), opt, function (er, data) {
    global = getNames(data || {})
    next()
  })

  function getNames_ (d, n) {
    if (d.realName && n) {
      if (n[d.realName]) return n
      n[d.realName] = true
    }
    if (!n) n = {}
    Object.keys(d.dependencies || {}).forEach(function (dep) {
      getNames_(d.dependencies[dep], n)
    })
    return n
  }
  function getNames (d) {
    return Object.keys(getNames_(d))
  }

  function next () {
    if (!local || !global) return
    if (!npm.config.get("global")) {
      global = global.map(function (g) {
        return [g, "-g"]
      })
    }
    var names = local.concat(global)
    return cb(null, names)
  }

}