|
|
|
module.exports = deprecate
|
|
|
|
|
|
|
|
var assert = require('assert')
|
|
|
|
var url = require('url')
|
|
|
|
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
|
|
|
|
|
|
|
|
if (semver.validRange(version) === null) {
|
|
|
|
return cb(new Error('invalid version range: ' + version))
|
|
|
|
}
|
|
|
|
|
|
|
|
this.get(uri + '?write=true', { auth: auth }, function (er, data) {
|
|
|
|
if (er) return cb(er)
|
|
|
|
// filter all the versions that match
|
|
|
|
Object.keys(data.versions).filter(function (v) {
|
|
|
|
return semver.satisfies(v, version)
|
|
|
|
}).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)
|
|
|
|
}.bind(this))
|
|
|
|
}
|