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)) }