@@ -13,12 +13,12 @@ var archy = require('archy')
13
13
var semver = require('semver')
14
14
var color = require('ansicolors')
15
15
var npa = require('npm-package-arg')
16
-
var iferr = require('iferr')
17
16
var sortedObject = require('sorted-object')
18
17
var extend = Object.assign || require('util')._extend
19
18
var npm = require('./npm.js')
20
19
var mutateIntoLogicalTree = require('./install/mutate-into-logical-tree.js')
21
20
var computeMetadata = require('./install/deps.js').computeMetadata
21
+
var readShrinkwrap = require('./install/read-shrinkwrap.js')
22
22
var packageId = require('./utils/package-id.js')
23
23
var usage = require('./utils/usage')
24
24
var output = require('./utils/output.js')
@@ -36,15 +36,13 @@ function ls (args, silent, cb) {
36
36
silent = false
37
37
}
38
38
var dir = path.resolve(npm.dir, '..')
39
-
readPackageTree(dir, andComputeMetadata(iferr(cb, function (physicalTree) {
40
-
lsFromTree(dir, physicalTree, args, silent, cb)
41
-
})))
42
-
}
43
-
44
-
function andComputeMetadata (next) {
45
-
return function (er, tree) {
46
-
next(null, computeMetadata(tree || {}))
47
-
}
39
+
readPackageTree(dir, function (_, physicalTree) {
40
+
if (!physicalTree) physicalTree = {package: {}, path: dir}
41
+
physicalTree.isTop = true
42
+
readShrinkwrap.andInflate(physicalTree, {fakeChildren: true}, function () {
43
+
lsFromTree(dir, computeMetadata(physicalTree), args, silent, cb)
44
+
})
45
+
})
48
46
}
49
47
50
48
function inList (list, value) {
@@ -224,7 +222,11 @@ function getLite (data, noname, depth) {
224
222
', required by ' +
225
223
packageId(data)
226
224
lite.problems.push(p)
227
-
return [d, { required: dep.requiredBy, missing: true }]
225
+
if (dep.dependencies) {
226
+
return [d, getLite(dep, true)]
227
+
} else {
228
+
return [d, { required: dep.requiredBy, missing: true }]
229
+
}
228
230
} else if (dep.peerMissing) {
229
231
lite.problems = lite.problems || []
230
232
dep.peerMissing.forEach(function (missing) {
@@ -262,7 +264,7 @@ function unloop (root) {
262
264
var deps = current.dependencies = current.dependencies || {}
263
265
Object.keys(deps).forEach(function (d) {
264
266
var dep = deps[d]
265
-
if (dep.missing) return
267
+
if (dep.missing && !dep.dependencies) return
266
268
if (dep.path && seen[dep.path]) {
267
269
dep = deps[d] = extend({}, dep)
268
270
dep.dependencies = {}
@@ -353,11 +355,26 @@ function makeArchy_ (data, long, dir, depth, parent, d) {
353
355
unmet = color.bgBlack(color.red(unmet))
354
356
}
355
357
}
356
-
data = unmet + ' ' + d + '@' + data.requiredBy
358
+
var label = data._id || (d + '@' + data.requiredBy)
359
+
if (data._found === 'explicit' && data._id) {
360
+
if (npm.color) {
361
+
label = color.bgBlack(color.yellow(label.trim())) + ' '
362
+
} else {
363
+
label = label.trim() + ' '
364
+
}
365
+
}
366
+
return {
367
+
label: unmet + ' ' + label,
368
+
nodes: Object.keys(data.dependencies || {})
369
+
.sort(alphasort).filter(function (d) {
370
+
return !isCruft(data.dependencies[d])
371
+
}).map(function (d) {
372
+
return makeArchy_(sortedObject(data.dependencies[d]), long, dir, depth + 1, data, d)
373
+
})
374
+
}
357
375
} else {
358
-
data = d + '@' + data.requiredBy
376
+
return {label: d + '@' + data.requiredBy}
359
377
}
360
-
return data
361
378
}
362
379
363
380
var out = {}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4