aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/lib/utils/completion/installed-deep.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/lib/utils/completion/installed-deep.js')
-rw-r--r--deps/node/deps/npm/lib/utils/completion/installed-deep.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/deps/node/deps/npm/lib/utils/completion/installed-deep.js b/deps/node/deps/npm/lib/utils/completion/installed-deep.js
new file mode 100644
index 00000000..dc9bfbee
--- /dev/null
+++ b/deps/node/deps/npm/lib/utils/completion/installed-deep.js
@@ -0,0 +1,52 @@
+module.exports = installedDeep
+
+var npm = require('../../npm.js')
+var readInstalled = require('read-installed')
+
+function installedDeep (opts, cb) {
+ var local
+ var global
+ var depth = npm.config.get('depth')
+ var 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)
+ }
+}