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) } }