diff options
author | isaacs <i@izs.me> | 2014-05-01 11:09:00 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2014-05-01 11:09:00 -0700 |
commit | f76c3938d0660378017bf276a72ea60e9adfe62c (patch) | |
tree | c2eedc352746051ce71d5ea91922d9a2139babef /deps/npm/lib/cache.js | |
parent | 1038959dbf70800545df319715e5d89dbd8ad8af (diff) | |
download | android-node-v8-f76c3938d0660378017bf276a72ea60e9adfe62c.tar.gz android-node-v8-f76c3938d0660378017bf276a72ea60e9adfe62c.tar.bz2 android-node-v8-f76c3938d0660378017bf276a72ea60e9adfe62c.zip |
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/cache.js')
-rw-r--r-- | deps/npm/lib/cache.js | 24 |
1 files changed, 24 insertions, 0 deletions
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() |