node/deps/npm/node_modules/npm-registry-client/lib/deprecate.js

44 lines
1.3 KiB
JavaScript
Raw Normal View History

2013-12-17 08:23:13 +08:00
module.exports = deprecate
var assert = require("assert")
2014-08-01 00:05:30 +08:00
var url = require("url")
2013-12-17 08:23:13 +08:00
var semver = require("semver")
function deprecate (uri, params, cb) {
assert(typeof uri === "string", "must pass registry URI to deprecate")
assert(params && typeof params === "object", "must pass params to deprecate")
assert(typeof cb === "function", "must pass callback to deprecate")
assert(typeof params.version === "string", "must pass version to deprecate")
assert(typeof params.message === "string", "must pass message to deprecate")
assert(
params.auth && typeof params.auth === "object",
"must pass auth to deprecate"
)
var version = params.version
var message = params.message
var auth = params.auth
2013-12-17 08:23:13 +08:00
if (semver.validRange(version) === null) {
return cb(new Error("invalid version range: "+version))
2013-12-17 08:23:13 +08:00
}
this.get(uri + "?write=true", { auth : auth }, function (er, data) {
2013-12-17 08:23:13 +08:00
if (er) return cb(er)
// filter all the versions that match
Object.keys(data.versions).filter(function (v) {
return semver.satisfies(v, version)
2013-12-17 08:23:13 +08:00
}).forEach(function (v) {
data.versions[v].deprecated = message
})
// now update the doc on the registry
var options = {
method : "PUT",
body : data,
auth : auth
}
this.request(url.resolve(uri, data._id), options, cb)
2013-12-17 08:23:13 +08:00
}.bind(this))
}