--- /dev/null
+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)
+ }
+
+}
+