diff options
Diffstat (limited to 'deps/npm/node_modules/read-installed/read-installed.js')
-rw-r--r-- | deps/npm/node_modules/read-installed/read-installed.js | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/deps/npm/node_modules/read-installed/read-installed.js b/deps/npm/node_modules/read-installed/read-installed.js index 2920d7d66..9ca482dab 100644 --- a/deps/npm/node_modules/read-installed/read-installed.js +++ b/deps/npm/node_modules/read-installed/read-installed.js @@ -101,17 +101,14 @@ var url = require("url") module.exports = readInstalled -function readInstalled (folder, depth_, log_, cb_) { - var depth = Infinity, log = function () {}, cb - for (var i = 1; i < arguments.length - 1; i++) { - if (typeof arguments[i] === 'number') - depth = arguments[i] - else if (typeof arguments[i] === 'function') - log = arguments[i] +function readInstalled (folder, opts, cb) { + if (typeof opts === 'function') { + cb = opts + opts = {} } - cb = arguments[i] + var depth = Infinity || opts.depth, log = function () {} || opts.log, dev = false || opts.dev - readInstalled_(folder, null, null, null, 0, depth, function (er, obj) { + readInstalled_(folder, null, null, null, 0, depth, dev, function (er, obj) { if (er) return cb(er) // now obj has all the installed things, where they're installed // figure out the inheritance links, now that the object is built. @@ -121,7 +118,7 @@ function readInstalled (folder, depth_, log_, cb_) { } var rpSeen = {} -function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, cb) { +function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, dev, cb) { var installed , obj , real @@ -177,7 +174,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, cb) { obj.realName = name || obj.name obj.dependencies = obj.dependencies || {} - // "foo":"http://blah" is always presumed valid + // "foo":"http://blah" and "foo":"latest" are always presumed valid if (reqver && semver.validRange(reqver, true) && !semver.satisfies(obj.version, reqver, true)) { @@ -186,7 +183,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, cb) { if (parent && !(name in parent.dependencies) - && !(name in (parent.devDependencies || {}))) { + && (dev || !(name in (parent.devDependencies || {})))) { obj.extraneous = true } obj.path = obj.path || folder @@ -198,7 +195,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, cb) { //if (depth >= maxDepth) return cb(null, obj) asyncMap(installed, function (pkg, cb) { var rv = obj.dependencies[pkg] - if (!rv && obj.devDependencies) rv = obj.devDependencies[pkg] + if (!rv && obj.devDependencies && !dev) rv = obj.devDependencies[pkg] if (depth >= maxDepth) { // just try to get the version number var pkgfolder = path.resolve(folder, "node_modules", pkg) @@ -220,6 +217,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, cb) { readInstalled_( path.resolve(folder, "node_modules/"+pkg) , obj, pkg, obj.dependencies[pkg], depth + 1, maxDepth + , dev , cb ) }, function (er, installedData) { @@ -285,9 +283,9 @@ function findUnmet (obj, log) { r = r.link ? null : r.parent continue } + // "foo":"http://blah" and "foo":"latest" are always presumed valid if ( typeof deps[d] === "string" - // url deps presumed innocent. - && !url.parse(deps[d]).protocol + && semver.validRange(deps[d], true) && !semver.satisfies(found.version, deps[d], true)) { // the bad thing will happen log("unmet dependency", obj.path + " requires "+d+"@'"+deps[d] |