summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/npm-registry-client/lib/unpublish.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/npm-registry-client/lib/unpublish.js')
-rw-r--r--deps/npm/node_modules/npm-registry-client/lib/unpublish.js120
1 files changed, 0 insertions, 120 deletions
diff --git a/deps/npm/node_modules/npm-registry-client/lib/unpublish.js b/deps/npm/node_modules/npm-registry-client/lib/unpublish.js
deleted file mode 100644
index 05c5a4b611..0000000000
--- a/deps/npm/node_modules/npm-registry-client/lib/unpublish.js
+++ /dev/null
@@ -1,120 +0,0 @@
-module.exports = unpublish
-
-// fetch the data
-// modify to remove the version in question
-// If no versions remaining, then DELETE
-// else, PUT the modified data
-// delete the tarball
-
-var semver = require('semver')
-var url = require('url')
-var chain = require('slide').chain
-var assert = require('assert')
-
-function unpublish (uri, params, cb) {
- assert(typeof uri === 'string', 'must pass registry URI to unpublish')
- assert(params && typeof params === 'object', 'must pass params to unpublish')
- assert(typeof cb === 'function', 'must pass callback to unpublish')
-
- var ver = params.version
- var auth = params.auth
- assert(auth && typeof auth === 'object', 'must pass auth to unpublish')
-
- var options = {
- timeout: -1,
- follow: false,
- auth: auth
- }
- this.get(uri + '?write=true', options, function (er, data) {
- if (er) {
- this.log.info('unpublish', uri + ' not published')
- return cb()
- }
- // remove all if no version specified
- if (!ver) {
- this.log.info('unpublish', 'No version specified, removing all')
- return this.request(uri + '/-rev/' + data._rev, { method: 'DELETE', auth: auth }, cb)
- }
-
- var versions = data.versions || {}
- var versionPublic = versions.hasOwnProperty(ver)
-
- var dist
- if (!versionPublic) {
- this.log.info('unpublish', uri + '@' + ver + ' not published')
- } else {
- dist = versions[ver].dist
- this.log.verbose('unpublish', 'removing attachments', dist)
- }
-
- delete versions[ver]
- // if it was the only version, then delete the whole package.
- if (!Object.keys(versions).length) {
- this.log.info('unpublish', 'No versions remain, removing entire package')
- return this.request(uri + '/-rev/' + data._rev, { method: 'DELETE', auth: auth }, cb)
- }
-
- if (!versionPublic) return cb()
-
- var latestVer = data['dist-tags'].latest
- for (var tag in data['dist-tags']) {
- if (data['dist-tags'][tag] === ver) delete data['dist-tags'][tag]
- }
-
- if (latestVer === ver) {
- data['dist-tags'].latest =
- Object.getOwnPropertyNames(versions).sort(semver.compareLoose).pop()
- }
-
- var rev = data._rev
- delete data._revisions
- delete data._attachments
- var cb_ = detacher.call(this, uri, data, dist, auth, cb)
-
- this.request(uri + '/-rev/' + rev, { method: 'PUT', body: data, auth: auth }, function (er) {
- if (er) {
- this.log.error('unpublish', 'Failed to update data')
- }
- cb_(er)
- }.bind(this))
- }.bind(this))
-}
-
-function detacher (uri, data, dist, credentials, cb) {
- return function (er) {
- if (er) return cb(er)
- this.get(escape(uri, data.name), { auth: credentials }, function (er, data) {
- if (er) return cb(er)
-
- var tb = url.parse(dist.tarball)
-
- detach.call(this, uri, data, tb.pathname, data._rev, credentials, function (er) {
- if (er || !dist.bin) return cb(er)
- chain(Object.keys(dist.bin).map(function (bt) {
- return function (cb) {
- var d = dist.bin[bt]
- detach.call(this, uri, data, url.parse(d.tarball).pathname, null, credentials, cb)
- }.bind(this)
- }, this), cb)
- }.bind(this))
- }.bind(this))
- }.bind(this)
-}
-
-function detach (uri, data, path, rev, credentials, cb) {
- if (rev) {
- path += '/-rev/' + rev
- this.log.info('detach', path)
- return this.request(url.resolve(uri, path), { method: 'DELETE', auth: credentials }, cb)
- }
- this.get(escape(uri, data.name), { auth: credentials }, function (er, data) {
- rev = data._rev
- if (!rev) return cb(new Error('No _rev found in ' + data._id))
- detach.call(this, data, path, rev, cb)
- }.bind(this))
-}
-
-function escape (base, name) {
- var escaped = name.replace(/\//, '%2f')
- return url.resolve(base, escaped)
-}