summaryrefslogtreecommitdiff
path: root/deps/npm/lib
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2014-05-01 11:09:00 -0700
committerisaacs <i@izs.me>2014-05-01 11:09:00 -0700
commitf76c3938d0660378017bf276a72ea60e9adfe62c (patch)
treec2eedc352746051ce71d5ea91922d9a2139babef /deps/npm/lib
parent1038959dbf70800545df319715e5d89dbd8ad8af (diff)
downloadnode-new-f76c3938d0660378017bf276a72ea60e9adfe62c.tar.gz
npm: upgrade to v1.4.8
* Check SHA before using files from cache * adduser: allow change of the saved password * Make `npm install` respect `config.unicode` * Fix lifecycle to pass `Infinity` for config env value * Don't return 0 exit code on invalid command * cache: Handle 404s and other HTTP errors as errors * bump tap dep, make tests stderr a bit quieter * Resolve ~ in path configs to env.HOME * Include npm version in default user-agent conf * npm init: Use ISC as default license, use save-prefix for deps * Many test and doc fixes
Diffstat (limited to 'deps/npm/lib')
-rw-r--r--deps/npm/lib/adduser.js18
-rw-r--r--deps/npm/lib/cache.js24
-rw-r--r--deps/npm/lib/help.js11
-rw-r--r--deps/npm/lib/install.js2
-rw-r--r--deps/npm/lib/npm.js8
-rw-r--r--deps/npm/lib/utils/error-handler.js2
-rw-r--r--deps/npm/lib/utils/lifecycle.js2
7 files changed, 57 insertions, 10 deletions
diff --git a/deps/npm/lib/adduser.js b/deps/npm/lib/adduser.js
index 739f14243f..94a119683a 100644
--- a/deps/npm/lib/adduser.js
+++ b/deps/npm/lib/adduser.js
@@ -66,15 +66,24 @@ function readUsername (c, u, cb) {
function readPassword (c, u, cb) {
var v = userValidate.pw
- if (!c.changed) {
- u.p = c.p
- return cb()
+ var prompt
+ if (c.p && !c.changed) {
+ prompt = "Password: (or leave unchanged) "
+ } else {
+ prompt = "Password: "
}
- read({prompt: "Password: ", silent: true}, function (er, pw) {
+
+ read({prompt: prompt, silent: true}, function (er, pw) {
if (er) {
return cb(er.message === "cancelled" ? er.message : er)
}
+ if (!c.changed && pw === "") {
+ // when the username was not changed,
+ // empty response means "use the old value"
+ pw = c.p
+ }
+
if (!pw) {
return readPassword(c, u, cb)
}
@@ -85,6 +94,7 @@ function readPassword (c, u, cb) {
return readPassword(c, u, cb)
}
+ c.changed = c.changed || c.p != pw
u.p = pw
cb(er)
})
diff --git a/deps/npm/lib/cache.js b/deps/npm/lib/cache.js
index b17da0cf92..5c2d07840e 100644
--- a/deps/npm/lib/cache.js
+++ b/deps/npm/lib/cache.js
@@ -84,6 +84,7 @@ var mkdir = require("mkdirp")
, which = require("which")
, isGitUrl = require("./utils/is-git-url.js")
, pathIsInside = require("path-is-inside")
+ , http = require("http")
cache.usage = "npm cache add <tarball file>"
+ "\nnpm cache add <folder>"
@@ -709,6 +710,9 @@ function addNameTag (name, tag, data, cb_) {
}
registry.get(name, function (er, data, json, response) {
+ if (!er) {
+ er = errorResponse(name, resp)
+ }
if (er) return cb(er)
engineFilter(data)
if (data["dist-tags"] && data["dist-tags"][tag]
@@ -744,6 +748,16 @@ function engineFilter (data) {
})
}
+function errorResponse (name, response) {
+ if (response.statusCode >= 400) {
+ var er = new Error(http.STATUS_CODES[response.statusCode])
+ er.statusCode = response.statusCode
+ er.code = "E" + er.statusCode
+ er.pkgid = name
+ }
+ return er
+}
+
function addNameRange (name, range, data, cb) {
if (typeof cb !== "function") cb = data, data = null
@@ -755,6 +769,9 @@ function addNameRange (name, range, data, cb) {
if (data) return next()
registry.get(name, function (er, d, json, response) {
+ if (!er) {
+ er = errorResponse(name, response)
+ }
if (er) return cb(er)
data = d
next()
@@ -820,6 +837,9 @@ function addNameVersion (name, v, data, cb) {
return next()
}
registry.get(name, function (er, d, json, resp) {
+ if (!er) {
+ er = errorResponse(name, resp)
+ }
if (er) return cb(er)
data = d && d.versions[ver]
if (!data) {
@@ -857,6 +877,10 @@ function addNameVersion (name, v, data, cb) {
if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR")
return cb(er)
if (er) return fetchit()
+ // check the SHA of the package we have, to ensure it wasn't installed
+ // from somewhere other than the registry (eg, a fork)
+ if (data._shasum && dist.shasum && data._shasum !== dist.shasum)
+ return fetchit()
return cb(null, data)
})
} else return fetchit()
diff --git a/deps/npm/lib/help.js b/deps/npm/lib/help.js
index ea3970b240..72b4393b6a 100644
--- a/deps/npm/lib/help.js
+++ b/deps/npm/lib/help.js
@@ -30,8 +30,11 @@ function help (args, cb) {
var section = npm.deref(args[0]) || args[0]
// npm help <noargs>: show basic usage
- if (!section)
- return npmUsage(cb)
+ if (!section) {
+ var valid = argv[0] === 'help' ? 0 : 1
+ return npmUsage(valid, cb)
+ }
+
// npm <cmd> -h: show command usage
if ( npm.config.get("usage")
@@ -147,7 +150,7 @@ function htmlMan (man) {
return path.resolve(__dirname, "..", "html", "doc", sect, f)
}
-function npmUsage (cb) {
+function npmUsage (valid, cb) {
npm.config.set("loglevel", "silent")
log.level = "silent"
console.log
@@ -170,7 +173,7 @@ function npmUsage (cb) {
, ""
, "npm@" + npm.version + " " + path.dirname(__dirname)
].join("\n"))
- cb()
+ cb(valid)
}
function usages () {
diff --git a/deps/npm/lib/install.js b/deps/npm/lib/install.js
index 8bc009349b..3e319fa673 100644
--- a/deps/npm/lib/install.js
+++ b/deps/npm/lib/install.js
@@ -448,7 +448,7 @@ function prettify (tree, installed) {
if (g) g = " (" + g + ")"
return c.what + g
})
- })
+ }, "", { unicode: npm.config.get("unicode") })
}).join("\n")
}
diff --git a/deps/npm/lib/npm.js b/deps/npm/lib/npm.js
index c443b64998..a529862d5a 100644
--- a/deps/npm/lib/npm.js
+++ b/deps/npm/lib/npm.js
@@ -288,6 +288,14 @@ function load (npm, cli, cb) {
npmconf.load(cli, builtin, function (er, config) {
if (er === config) er = null
+ // Include npm-version and node-version in user-agent
+ var ua = config.get("user-agent") || ""
+ ua = ua.replace(/\{node-version\}/gi, process.version)
+ ua = ua.replace(/\{npm-version\}/gi, npm.version)
+ ua = ua.replace(/\{platform\}/gi, process.platform)
+ ua = ua.replace(/\{arch\}/gi, process.arch)
+ config.set("user-agent", ua)
+
npm.config = config
var color = config.get("color")
diff --git a/deps/npm/lib/utils/error-handler.js b/deps/npm/lib/utils/error-handler.js
index 9777c6a50b..b025fdd371 100644
--- a/deps/npm/lib/utils/error-handler.js
+++ b/deps/npm/lib/utils/error-handler.js
@@ -279,7 +279,7 @@ function errorHandler (er) {
var os = require("os")
// just a line break
- console.error("")
+ if (log.levels[log.level] <= log.levels.error) console.error("")
log.error("System", os.type() + " " + os.release())
log.error("command", process.argv
.map(JSON.stringify).join(" "))
diff --git a/deps/npm/lib/utils/lifecycle.js b/deps/npm/lib/utils/lifecycle.js
index d1493700d0..1af5bddca7 100644
--- a/deps/npm/lib/utils/lifecycle.js
+++ b/deps/npm/lib/utils/lifecycle.js
@@ -1,5 +1,6 @@
exports = module.exports = lifecycle
exports.cmd = cmd
+exports.makeEnv = makeEnv
var log = require("npmlog")
, spawn = require("child_process").spawn
@@ -314,6 +315,7 @@ function makeEnv (data, prefix, env) {
var value = npm.config.get(i)
if (value instanceof Stream || Array.isArray(value)) return
if (!value) value = ""
+ else if (typeof value === "number") value = "" + value
else if (typeof value !== "string") value = JSON.stringify(value)
value = -1 !== value.indexOf("\n")