diff options
Diffstat (limited to 'deps/node/deps/npm/node_modules/libnpmpublish/unpublish.js')
-rw-r--r-- | deps/node/deps/npm/node_modules/libnpmpublish/unpublish.js | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/deps/node/deps/npm/node_modules/libnpmpublish/unpublish.js b/deps/node/deps/npm/node_modules/libnpmpublish/unpublish.js deleted file mode 100644 index d7d98243..00000000 --- a/deps/node/deps/npm/node_modules/libnpmpublish/unpublish.js +++ /dev/null @@ -1,86 +0,0 @@ -'use strict' - -const figgyPudding = require('figgy-pudding') -const npa = require('npm-package-arg') -const npmFetch = require('npm-registry-fetch') -const semver = require('semver') -const url = require('url') - -const UnpublishConfig = figgyPudding({ - force: { default: false }, - Promise: { default: () => Promise } -}) - -module.exports = unpublish -function unpublish (spec, opts) { - opts = UnpublishConfig(opts) - return new opts.Promise(resolve => resolve()).then(() => { - spec = npa(spec) - // NOTE: spec is used to pick the appropriate registry/auth combo. - opts = opts.concat({ spec }) - const pkgUri = spec.escapedName - return npmFetch.json(pkgUri, opts.concat({ - query: { write: true } - })).then(pkg => { - if (!spec.rawSpec || spec.rawSpec === '*') { - return npmFetch(`${pkgUri}/-rev/${pkg._rev}`, opts.concat({ - method: 'DELETE', - ignoreBody: true - })) - } else { - const version = spec.rawSpec - const allVersions = pkg.versions || {} - const versionPublic = allVersions[version] - let dist - if (versionPublic) { - dist = allVersions[version].dist - } - delete allVersions[version] - // if it was the only version, then delete the whole package. - if (!Object.keys(allVersions).length) { - return npmFetch(`${pkgUri}/-rev/${pkg._rev}`, opts.concat({ - method: 'DELETE', - ignoreBody: true - })) - } else if (versionPublic) { - const latestVer = pkg['dist-tags'].latest - Object.keys(pkg['dist-tags']).forEach(tag => { - if (pkg['dist-tags'][tag] === version) { - delete pkg['dist-tags'][tag] - } - }) - - if (latestVer === version) { - pkg['dist-tags'].latest = Object.keys( - allVersions - ).sort(semver.compareLoose).pop() - } - - delete pkg._revisions - delete pkg._attachments - // Update packument with removed versions - return npmFetch(`${pkgUri}/-rev/${pkg._rev}`, opts.concat({ - method: 'PUT', - body: pkg, - ignoreBody: true - })).then(() => { - // Remove the tarball itself - return npmFetch.json(pkgUri, opts.concat({ - query: { write: true } - })).then(({ _rev, _id }) => { - const tarballUrl = url.parse(dist.tarball).pathname.substr(1) - return npmFetch(`${tarballUrl}/-rev/${_rev}`, opts.concat({ - method: 'DELETE', - ignoreBody: true - })) - }) - }) - } - } - }, err => { - if (err.code !== 'E404') { - throw err - } - }) - }).then(() => true) -} |