--- /dev/null
+module.exports = deprecate
+
+var assert = require('assert')
+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(uri, options, cb)
+ }.bind(this))
+}