Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2014-03-16 09:18:10 +0400
committerisaacs <i@izs.me>2014-03-16 09:18:10 +0400
commit1d29b17f5193d52a5c4faa412a95313dcf41ed91 (patch)
tree18451ae14878480efd469fd72c1b560923ee0193 /node_modules/read-installed
parentce662561ca0a7b154a7e6058a6a2428b49bd7266 (diff)
read-installed@2.0.0
Diffstat (limited to 'node_modules/read-installed')
-rw-r--r--node_modules/read-installed/.npmignore13
-rw-r--r--node_modules/read-installed/README.md10
-rw-r--r--node_modules/read-installed/node_modules/util-extend/README.md13
-rw-r--r--node_modules/read-installed/node_modules/util-extend/extend.js33
-rw-r--r--node_modules/read-installed/node_modules/util-extend/package.json23
-rw-r--r--node_modules/read-installed/node_modules/util-extend/test.js10
-rw-r--r--node_modules/read-installed/package.json11
-rw-r--r--node_modules/read-installed/read-installed.js59
-rw-r--r--node_modules/read-installed/test/basic.js4
-rw-r--r--node_modules/read-installed/test/depth-0.js25
-rw-r--r--node_modules/read-installed/test/depth-1.js23
-rw-r--r--node_modules/read-installed/test/dev.js7
-rw-r--r--node_modules/read-installed/test/fixtures/package.json27
-rw-r--r--node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/debug/package.json7
-rw-r--r--node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/strong-task-emitter/package.json10
-rw-r--r--node_modules/read-installed/test/noargs.js4
16 files changed, 227 insertions, 52 deletions
diff --git a/node_modules/read-installed/.npmignore b/node_modules/read-installed/.npmignore
new file mode 100644
index 000000000..8c23deeb3
--- /dev/null
+++ b/node_modules/read-installed/.npmignore
@@ -0,0 +1,13 @@
+*.swp
+.*.swp
+
+.DS_Store
+*~
+.project
+.settings
+npm-debug.log
+coverage.html
+.idea
+lib-cov
+
+node_modules
diff --git a/node_modules/read-installed/README.md b/node_modules/read-installed/README.md
index 535a8496f..312153b4f 100644
--- a/node_modules/read-installed/README.md
+++ b/node_modules/read-installed/README.md
@@ -5,21 +5,23 @@ structure with all the data.
npm uses this.
-## 1.0.0
+## 2.0.0
-Breaking changes in `1.0.0`:
+Breaking changes in `2.0.0`:
The second argument is now an `Object` that contains the following keys:
* `depth` optional, defaults to Infinity
* `log` optional log Function
- * `dev` optional, dev=true to mark devDeps as extraneous
+ * `dev` optional, default false, set to true to include devDependencies
## Usage
```javascript
var readInstalled = require("read-installed")
-readInstalled(folder, { depth, log, dev }, function (er, data) {
+// optional options
+var options = { dev: false, log: fn, depth: 2 }
+readInstalled(folder, options, function (er, data) {
...
})
```
diff --git a/node_modules/read-installed/node_modules/util-extend/README.md b/node_modules/read-installed/node_modules/util-extend/README.md
new file mode 100644
index 000000000..be03922ab
--- /dev/null
+++ b/node_modules/read-installed/node_modules/util-extend/README.md
@@ -0,0 +1,13 @@
+# util-extend
+
+The Node object extending function that Node uses for Node!
+
+## Usage
+
+```js
+var extend = require('util-extend');
+function functionThatTakesOptions(options) {
+ var options = extend(defaults, options);
+ // now any unset options are set to the defaults.
+}
+```
diff --git a/node_modules/read-installed/node_modules/util-extend/extend.js b/node_modules/read-installed/node_modules/util-extend/extend.js
new file mode 100644
index 000000000..de9fcf471
--- /dev/null
+++ b/node_modules/read-installed/node_modules/util-extend/extend.js
@@ -0,0 +1,33 @@
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+module.exports = extend;
+function extend(origin, add) {
+ // Don't do anything if add isn't an object
+ if (!add || typeof add !== 'object') return origin;
+
+ var keys = Object.keys(add);
+ var i = keys.length;
+ while (i--) {
+ origin[keys[i]] = add[keys[i]];
+ }
+ return origin;
+}
diff --git a/node_modules/read-installed/node_modules/util-extend/package.json b/node_modules/read-installed/node_modules/util-extend/package.json
new file mode 100644
index 000000000..f45c5c94f
--- /dev/null
+++ b/node_modules/read-installed/node_modules/util-extend/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "util-extend",
+ "version": "1.0.1",
+ "description": "Node's internal object extension function",
+ "main": "extend.js",
+ "scripts": {
+ "test": "node test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/util-extend"
+ },
+ "author": "",
+ "license": "MIT",
+ "readmeFilename": "README.md",
+ "readme": "# util-extend\n\nThe Node object extending function that Node uses for Node!\n\n## Usage\n\n```js\nvar extend = require('util-extend');\nfunction functionThatTakesOptions(options) {\n var options = extend(defaults, options);\n // now any unset options are set to the defaults.\n}\n```\n",
+ "bugs": {
+ "url": "https://github.com/isaacs/util-extend/issues"
+ },
+ "homepage": "https://github.com/isaacs/util-extend",
+ "_id": "util-extend@1.0.1",
+ "_from": "util-extend@^1.0.1"
+}
diff --git a/node_modules/read-installed/node_modules/util-extend/test.js b/node_modules/read-installed/node_modules/util-extend/test.js
new file mode 100644
index 000000000..fbee2b1e1
--- /dev/null
+++ b/node_modules/read-installed/node_modules/util-extend/test.js
@@ -0,0 +1,10 @@
+var assert = require('assert');
+var extend = require('./');
+assert.deepEqual(extend({a:1}), {a:1});
+assert.deepEqual(extend({a:1}, []), {a:1});
+assert.deepEqual(extend({a:1}, null), {a:1});
+assert.deepEqual(extend({a:1}, true), {a:1});
+assert.deepEqual(extend({a:1}, false), {a:1});
+assert.deepEqual(extend({a:1}, {b:2}), {a:1, b:2});
+assert.deepEqual(extend({a:1, b:2}, {b:3}), {a:1, b:3});
+console.log('ok');
diff --git a/node_modules/read-installed/package.json b/node_modules/read-installed/package.json
index 16836d266..ed86f4361 100644
--- a/node_modules/read-installed/package.json
+++ b/node_modules/read-installed/package.json
@@ -1,19 +1,20 @@
{
"name": "read-installed",
"description": "Read all the installed packages in a folder, and return a tree structure with all the data.",
- "version": "1.0.0",
+ "version": "2.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/read-installed"
},
"main": "read-installed.js",
"scripts": {
- "test": "tap ./test/"
+ "test": "tap ./test/*.js"
},
"dependencies": {
+ "read-package-json": "1",
"semver": "2",
"slide": "~1.1.3",
- "read-package-json": "1",
+ "util-extend": "^1.0.1",
"graceful-fs": "~2"
},
"optionalDependencies": {
@@ -28,12 +29,12 @@
"devDependencies": {
"tap": "~0.4.8"
},
- "readme": "# read-installed\n\nRead all the installed packages in a folder, and return a tree\nstructure with all the data.\n\nnpm uses this.\n\n## 1.0.0\n\nBreaking changes in `1.0.0`:\n\nThe second argument is now an `Object` that contains the following keys:\n\n * `depth` optional, defaults to Infinity\n * `log` optional log Function\n * `dev` optional, dev=true to mark devDeps as extraneous\n\n## Usage\n\n```javascript\nvar readInstalled = require(\"read-installed\")\nreadInstalled(folder, { depth, log, dev }, function (er, data) {\n ...\n})\n```\n",
+ "readme": "# read-installed\n\nRead all the installed packages in a folder, and return a tree\nstructure with all the data.\n\nnpm uses this.\n\n## 2.0.0\n\nBreaking changes in `2.0.0`:\n\nThe second argument is now an `Object` that contains the following keys:\n\n * `depth` optional, defaults to Infinity\n * `log` optional log Function\n * `dev` optional, default false, set to true to include devDependencies\n\n## Usage\n\n```javascript\nvar readInstalled = require(\"read-installed\")\n// optional options\nvar options = { dev: false, log: fn, depth: 2 }\nreadInstalled(folder, options, function (er, data) {\n ...\n})\n```\n",
"readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/isaacs/read-installed/issues"
},
"homepage": "https://github.com/isaacs/read-installed",
- "_id": "read-installed@1.0.0",
+ "_id": "read-installed@2.0.0",
"_from": "read-installed@latest"
}
diff --git a/node_modules/read-installed/read-installed.js b/node_modules/read-installed/read-installed.js
index 9ca482dab..7b3749d60 100644
--- a/node_modules/read-installed/read-installed.js
+++ b/node_modules/read-installed/read-installed.js
@@ -98,6 +98,8 @@ var asyncMap = require("slide").asyncMap
var semver = require("semver")
var readJson = require("read-package-json")
var url = require("url")
+var util = require("util")
+var extend = require("util-extend")
module.exports = readInstalled
@@ -105,20 +107,31 @@ function readInstalled (folder, opts, cb) {
if (typeof opts === 'function') {
cb = opts
opts = {}
+ } else {
+ opts = extend({}, opts)
}
- var depth = Infinity || opts.depth, log = function () {} || opts.log, dev = false || opts.dev
- readInstalled_(folder, null, null, null, 0, depth, dev, function (er, obj) {
+ if (typeof opts.depth !== 'number')
+ opts.depth = Infinity
+
+ opts.depth = Math.max(0, opts.depth)
+
+ if (typeof opts.log !== 'function')
+ opts.log = function () {}
+
+ opts.dev = !!opts.dev
+
+ readInstalled_(folder, null, null, null, 0, opts, 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.
- resolveInheritance(obj, log)
+ resolveInheritance(obj, opts)
cb(null, obj)
})
}
var rpSeen = {}
-function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, dev, cb) {
+function readInstalled_ (folder, parent, name, reqver, depth, opts, cb) {
var installed
, obj
, real
@@ -181,29 +194,36 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, dev, cb)
obj.invalid = true
}
- if (parent
- && !(name in parent.dependencies)
- && (dev || !(name in (parent.devDependencies || {})))) {
- obj.extraneous = true
+ if (parent) {
+ var deps = parent.dependencies || {}
+ var inDeps = name in deps
+ var devDeps = parent.devDependencies || {}
+ var inDev = opts.dev && (name in devDeps)
+ if (!inDeps && !inDev) {
+ obj.extraneous = true
+ }
}
+
obj.path = obj.path || folder
obj.realPath = real
obj.link = link
if (parent && !obj.link) obj.parent = parent
rpSeen[real] = obj
obj.depth = depth
- //if (depth >= maxDepth) return cb(null, obj)
+ //if (depth >= opts.depth) return cb(null, obj)
asyncMap(installed, function (pkg, cb) {
var rv = obj.dependencies[pkg]
- if (!rv && obj.devDependencies && !dev) rv = obj.devDependencies[pkg]
- if (depth >= maxDepth) {
+ if (!rv && obj.devDependencies && opts.dev)
+ rv = obj.devDependencies[pkg]
+
+ if (depth >= opts.depth) {
// just try to get the version number
var pkgfolder = path.resolve(folder, "node_modules", pkg)
, jsonFile = path.resolve(pkgfolder, "package.json")
return readJson(jsonFile, function (er, depData) {
// already out of our depth, ignore errors
if (er || !depData || !depData.version) return cb(null, obj)
- if (depth === maxDepth) {
+ if (depth === opts.depth) {
// edge case, ignore dependencies
depData.dependencies = {}
depData.peerDependencies = {}
@@ -216,8 +236,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, dev, cb)
}
readInstalled_( path.resolve(folder, "node_modules/"+pkg)
- , obj, pkg, obj.dependencies[pkg], depth + 1, maxDepth
- , dev
+ , obj, pkg, obj.dependencies[pkg], depth + 1, opts
, cb )
}, function (er, installedData) {
@@ -242,7 +261,7 @@ function readInstalled_ (folder, parent, name, reqver, depth, maxDepth, dev, cb)
// starting from a root object, call findUnmet on each layer of children
var riSeen = []
-function resolveInheritance (obj, log) {
+function resolveInheritance (obj, opts) {
if (typeof obj !== "object") return
if (riSeen.indexOf(obj) !== -1) return
riSeen.push(obj)
@@ -250,18 +269,18 @@ function resolveInheritance (obj, log) {
obj.dependencies = {}
}
Object.keys(obj.dependencies).forEach(function (dep) {
- findUnmet(obj.dependencies[dep], log)
+ findUnmet(obj.dependencies[dep], opts)
})
Object.keys(obj.dependencies).forEach(function (dep) {
- resolveInheritance(obj.dependencies[dep], log)
+ resolveInheritance(obj.dependencies[dep], opts)
})
- findUnmet(obj, log)
+ findUnmet(obj, opts)
}
// find unmet deps by walking up the tree object.
// No I/O
var fuSeen = []
-function findUnmet (obj, log) {
+function findUnmet (obj, opts) {
if (fuSeen.indexOf(obj) !== -1) return
fuSeen.push(obj)
//console.error("find unmet", obj.name, obj.parent && obj.parent.name)
@@ -288,7 +307,7 @@ function findUnmet (obj, log) {
&& 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]
+ opts.log("unmet dependency", obj.path + " requires "+d+"@'"+deps[d]
+"' but will load\n"
+found.path+",\nwhich is version "+found.version
)
diff --git a/node_modules/read-installed/test/basic.js b/node_modules/read-installed/test/basic.js
index a6c5ff546..4d83cd0ca 100644
--- a/node_modules/read-installed/test/basic.js
+++ b/node_modules/read-installed/test/basic.js
@@ -1,5 +1,5 @@
var readInstalled = require("../read-installed.js")
-var json = require("../package.json")
+var json = require("./fixtures/package.json")
var known = [].concat(Object.keys(json.dependencies)
, Object.keys(json.optionalDependencies)
, Object.keys(json.devDependencies)).sort()
@@ -8,6 +8,7 @@ var path = require("path")
test("make sure that it works", function (t) {
readInstalled(path.join(__dirname, "../"), {
+ dev: true,
log: console.error
}, function (er, map) {
t.notOk(er, "er should be bull")
@@ -21,6 +22,7 @@ test("make sure that it works", function (t) {
t.end()
})
})
+
var seen = []
function cleanup (map) {
if (seen.indexOf(map) !== -1) return
diff --git a/node_modules/read-installed/test/depth-0.js b/node_modules/read-installed/test/depth-0.js
new file mode 100644
index 000000000..16dc6c525
--- /dev/null
+++ b/node_modules/read-installed/test/depth-0.js
@@ -0,0 +1,25 @@
+var readInstalled = require("../read-installed.js")
+var test = require("tap").test
+var json = require("../package.json")
+var path = require("path")
+var known = [].concat(Object.keys(json.dependencies)
+ , Object.keys(json.optionalDependencies)
+ , Object.keys(json.devDependencies)).sort()
+
+test("make sure that it works with depth=0", function (t) {
+ readInstalled(path.join(__dirname, "../"), {
+ depth: 0
+ }, function (er, map) {
+ t.notOk(er, "er should be bull")
+ t.ok(map, "map should be data")
+ if (er) return console.error(er.stack || er.message)
+ // Exclude self from dependencies when depth = 0
+ delete map.dependencies[json.name]
+ var subdeps = Object.keys(map.dependencies).reduce(function(acc, dep) {
+ acc += Object.keys(map.dependencies[dep].dependencies).length;
+ return acc;
+ }, 0);
+ t.equal(subdeps, 0, "there should be no sub dependencies")
+ t.end()
+ })
+})
diff --git a/node_modules/read-installed/test/depth-1.js b/node_modules/read-installed/test/depth-1.js
new file mode 100644
index 000000000..977c9276f
--- /dev/null
+++ b/node_modules/read-installed/test/depth-1.js
@@ -0,0 +1,23 @@
+var readInstalled = require("../read-installed.js")
+var test = require("tap").test
+var json = require("../package.json")
+var path = require("path")
+var known = [].concat(Object.keys(json.dependencies)
+ , Object.keys(json.optionalDependencies)
+ , Object.keys(json.devDependencies)).sort()
+
+test("make sure that it works with depth=1", function (t) {
+ readInstalled(path.join(__dirname, "../"), {
+ depth: 1
+ }, function (er, map) {
+ t.notOk(er, "er should be bull")
+ t.ok(map, "map should be data")
+ if (er) return console.error(er.stack || er.message)
+ var subdeps = Object.keys(map.dependencies).reduce(function(acc, dep) {
+ acc += Object.keys(map.dependencies[dep].dependencies).length;
+ return acc;
+ }, 0);
+ t.notEqual(subdeps, 0, "there should some sub dependencies")
+ t.end()
+ })
+})
diff --git a/node_modules/read-installed/test/dev.js b/node_modules/read-installed/test/dev.js
index 104761745..f6f4857bb 100644
--- a/node_modules/read-installed/test/dev.js
+++ b/node_modules/read-installed/test/dev.js
@@ -1,6 +1,6 @@
var readInstalled = require("../read-installed.js")
var test = require("tap").test
-var json = require("../package.json")
+var json = require("./fixtures/package.json")
var path = require("path")
var known = [].concat(Object.keys(json.dependencies)
, Object.keys(json.optionalDependencies)
@@ -8,8 +8,9 @@ var known = [].concat(Object.keys(json.dependencies)
test("make sure that it works without dev deps", function (t) {
readInstalled(path.join(__dirname, "../"), {
- log: console.error
- , dev: true }, function (er, map) {
+ log: console.error,
+ dev: false
+ }, function (er, map) {
t.notOk(er, "er should be bull")
t.ok(map, "map should be data")
if (er) return console.error(er.stack || er.message)
diff --git a/node_modules/read-installed/test/fixtures/package.json b/node_modules/read-installed/test/fixtures/package.json
new file mode 100644
index 000000000..8f4f11916
--- /dev/null
+++ b/node_modules/read-installed/test/fixtures/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "read-installed",
+ "description": "Read all the installed packages in a folder, and return a tree structure with all the data.",
+ "version": "1.0.0",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/read-installed"
+ },
+ "main": "read-installed.js",
+ "scripts": {
+ "test": "tap ./test/"
+ },
+ "dependencies": {
+ "semver": "2",
+ "slide": "~1.1.3",
+ "read-package-json": "1",
+ "util-extend":"1"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "~2"
+ },
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
+ "license": "ISC",
+ "devDependencies": {
+ "tap": "~0.4.8"
+ }
+}
diff --git a/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/debug/package.json b/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/debug/package.json
deleted file mode 100644
index f56ac0fc5..000000000
--- a/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/debug/package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "name": "debug",
- "version": "0.7.4",
- "dependencies": {},
- "_id": "debug@0.7.4",
- "_from": "debug@latest"
-}
diff --git a/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/strong-task-emitter/package.json b/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/strong-task-emitter/package.json
deleted file mode 100644
index 8824f5387..000000000
--- a/node_modules/read-installed/test/fixtures/peer-at-latest/node_modules/strong-task-emitter/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "strong-task-emitter",
- "version": "0.0.4",
- "dependencies": {
- "debug": "latest"
- },
- "_id": "strong-task-emitter@0.0.4",
- "_from": "strong-task-emitter@0.0.4",
- "_resolved": "https://registry.npmjs.org/strong-task-emitter/-/strong-task-emitter-0.0.4.tgz"
-}
diff --git a/node_modules/read-installed/test/noargs.js b/node_modules/read-installed/test/noargs.js
index 0de5ba430..a84a8f4cf 100644
--- a/node_modules/read-installed/test/noargs.js
+++ b/node_modules/read-installed/test/noargs.js
@@ -1,6 +1,6 @@
var readInstalled = require("../read-installed.js")
var test = require("tap").test
-var json = require("../package.json")
+var json = require("./fixtures/package.json")
var path = require("path")
var known = [].concat(Object.keys(json.dependencies)
, Object.keys(json.optionalDependencies)
@@ -14,7 +14,7 @@ test("make sure that it works without dev deps", function (t) {
var deps = Object.keys(map.dependencies).sort()
t.equal(deps.length, known.length, "array lengths are equal")
t.deepEqual(deps, known, "arrays should be equal")
- t.notOk(map.dependencies.tap.extraneous, 'extraneous is set on devDep')
+ t.ok(map.dependencies.tap.extraneous, 'extraneous is set on devDep')
t.end()
})
})