GRAYBYTE WORDPRESS FILE MANAGER4519

Server IP : 198.54.121.189 / Your IP : 216.73.216.34
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /lib/node_modules/npm/lib/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /lib/node_modules/npm/lib//owner.js
module.exports = owner

const BB = require('bluebird')

const log = require('npmlog')
const npa = require('libnpm/parse-arg')
const npmConfig = require('./config/figgy-config.js')
const npmFetch = require('libnpm/fetch')
const output = require('./utils/output.js')
const otplease = require('./utils/otplease.js')
const packument = require('libnpm/packument')
const readLocalPkg = BB.promisify(require('./utils/read-local-package.js'))
const usage = require('./utils/usage')
const whoami = BB.promisify(require('./whoami.js'))

owner.usage = usage(
  'owner',
  'npm owner add <user> [<@scope>/]<pkg>' +
  '\nnpm owner rm <user> [<@scope>/]<pkg>' +
  '\nnpm owner ls [<@scope>/]<pkg>'
)

owner.completion = function (opts, cb) {
  const argv = opts.conf.argv.remain
  if (argv.length > 4) return cb()
  if (argv.length <= 2) {
    var subs = ['add', 'rm']
    if (opts.partialWord === 'l') subs.push('ls')
    else subs.push('ls', 'list')
    return cb(null, subs)
  }
  BB.try(() => {
    const opts = npmConfig()
    return whoami([], true).then(username => {
      const un = encodeURIComponent(username)
      let byUser, theUser
      switch (argv[2]) {
        case 'ls':
          // FIXME: there used to be registry completion here, but it stopped
          // making sense somewhere around 50,000 packages on the registry
          return
        case 'rm':
          if (argv.length > 3) {
            theUser = encodeURIComponent(argv[3])
            byUser = `/-/by-user/${theUser}|${un}`
            return npmFetch.json(byUser, opts).then(d => {
              return d[theUser].filter(
                // kludge for server adminery.
                p => un === 'isaacs' || d[un].indexOf(p) === -1
              )
            })
          }
          // else fallthrough
          /* eslint no-fallthrough:0 */
        case 'add':
          if (argv.length > 3) {
            theUser = encodeURIComponent(argv[3])
            byUser = `/-/by-user/${theUser}|${un}`
            return npmFetch.json(byUser, opts).then(d => {
              var mine = d[un] || []
              var theirs = d[theUser] || []
              return mine.filter(p => theirs.indexOf(p) === -1)
            })
          } else {
            // just list all users who aren't me.
            return npmFetch.json('/-/users', opts).then(list => {
              return Object.keys(list).filter(n => n !== un)
            })
          }

        default:
          return cb()
      }
    })
  }).nodeify(cb)
}

function UsageError () {
  throw Object.assign(new Error(owner.usage), {code: 'EUSAGE'})
}

function owner ([action, ...args], cb) {
  const opts = npmConfig()
  BB.try(() => {
    switch (action) {
      case 'ls': case 'list': return ls(args[0], opts)
      case 'add': return add(args[0], args[1], opts)
      case 'rm': case 'remove': return rm(args[0], args[1], opts)
      default: UsageError()
    }
  }).then(
    data => cb(null, data),
    err => err.code === 'EUSAGE' ? cb(err.message) : cb(err)
  )
}

function ls (pkg, opts) {
  if (!pkg) {
    return readLocalPkg().then(pkg => {
      if (!pkg) { UsageError() }
      return ls(pkg, opts)
    })
  }

  const spec = npa(pkg)
  return packument(spec, opts.concat({fullMetadata: true})).then(
    data => {
      var owners = data.maintainers
      if (!owners || !owners.length) {
        output('admin party!')
      } else {
        output(owners.map(o => `${o.name} <${o.email}>`).join('\n'))
      }
      return owners
    },
    err => {
      log.error('owner ls', "Couldn't get owner data", pkg)
      throw err
    }
  )
}

function add (user, pkg, opts) {
  if (!user) { UsageError() }
  if (!pkg) {
    return readLocalPkg().then(pkg => {
      if (!pkg) { UsageError() }
      return add(user, pkg, opts)
    })
  }
  log.verbose('owner add', '%s to %s', user, pkg)

  const spec = npa(pkg)
  return withMutation(spec, user, opts, (u, owners) => {
    if (!owners) owners = []
    for (var i = 0, l = owners.length; i < l; i++) {
      var o = owners[i]
      if (o.name === u.name) {
        log.info(
          'owner add',
          'Already a package owner: ' + o.name + ' <' + o.email + '>'
        )
        return false
      }
    }
    owners.push(u)
    return owners
  })
}

function rm (user, pkg, opts) {
  if (!user) { UsageError() }
  if (!pkg) {
    return readLocalPkg().then(pkg => {
      if (!pkg) { UsageError() }
      return add(user, pkg, opts)
    })
  }
  log.verbose('owner rm', '%s from %s', user, pkg)

  const spec = npa(pkg)
  return withMutation(spec, user, opts, function (u, owners) {
    let found = false
    const m = owners.filter(function (o) {
      var match = (o.name === user)
      found = found || match
      return !match
    })

    if (!found) {
      log.info('owner rm', 'Not a package owner: ' + user)
      return false
    }

    if (!m.length) {
      throw new Error(
        'Cannot remove all owners of a package.  Add someone else first.'
      )
    }

    return m
  })
}

function withMutation (spec, user, opts, mutation) {
  return BB.try(() => {
    if (user) {
      const uri = `/-/user/org.couchdb.user:${encodeURIComponent(user)}`
      return npmFetch.json(uri, opts).then(mutate_, err => {
        log.error('owner mutate', 'Error getting user data for %s', user)
        throw err
      })
    } else {
      return mutate_(null)
    }
  })

  function mutate_ (u) {
    if (user && (!u || u.error)) {
      throw new Error(
        "Couldn't get user data for " + user + ': ' + JSON.stringify(u)
      )
    }

    if (u) u = { name: u.name, email: u.email }
    return packument(spec, opts.concat({
      fullMetadata: true
    })).then(data => {
      // save the number of maintainers before mutation so that we can figure
      // out if maintainers were added or removed
      const beforeMutation = data.maintainers.length

      const m = mutation(u, data.maintainers)
      if (!m) return // handled
      if (m instanceof Error) throw m // error

      data = {
        _id: data._id,
        _rev: data._rev,
        maintainers: m
      }
      const dataPath = `/${spec.escapedName}/-rev/${encodeURIComponent(data._rev)}`
      return otplease(opts, opts => {
        const reqOpts = opts.concat({
          method: 'PUT',
          body: data,
          spec
        })
        return npmFetch.json(dataPath, reqOpts)
      }).then(data => {
        if (data.error) {
          throw new Error('Failed to update package metadata: ' + JSON.stringify(data))
        } else if (m.length > beforeMutation) {
          output('+ %s (%s)', user, spec.name)
        } else if (m.length < beforeMutation) {
          output('- %s (%s)', user, spec.name)
        }
        return data
      })
    })
  }
}

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
January 01 1970 00:00:00
root / root
0
auth
--
March 03 2024 22:36:29
root / root
0755
config
--
March 03 2024 22:36:29
root / root
0755
doctor
--
March 03 2024 22:36:29
root / root
0755
install
--
March 03 2024 22:36:29
root / root
0755
search
--
March 03 2024 22:36:29
root / root
0755
utils
--
March 03 2024 22:36:29
root / root
0755
access.js
5.539 KB
March 10 2021 14:36:36
root / root
0644
adduser.js
1.306 KB
March 10 2021 14:36:36
root / root
0644
audit.js
10.558 KB
March 10 2021 14:36:36
root / root
0644
bin.js
0.503 KB
March 10 2021 14:36:36
root / root
0644
bugs.js
0.844 KB
March 10 2021 14:36:35
root / root
0644
build.js
4.438 KB
March 10 2021 14:36:36
root / root
0644
cache.js
4.661 KB
March 10 2021 14:36:36
root / root
0644
ci.js
1.31 KB
March 10 2021 14:36:36
root / root
0644
completion.js
7.107 KB
March 10 2021 14:36:36
root / root
0644
config.js
7.434 KB
March 10 2021 14:36:36
root / root
0644
dedupe.js
4.882 KB
March 10 2021 14:36:35
root / root
0644
deprecate.js
2.106 KB
March 10 2021 14:36:35
root / root
0644
dist-tag.js
4.105 KB
March 10 2021 14:36:36
root / root
0644
docs.js
1.038 KB
March 10 2021 14:36:36
root / root
0644
doctor.js
3.979 KB
March 10 2021 14:36:35
root / root
0644
edit.js
1.374 KB
March 10 2021 14:36:36
root / root
0644
explore.js
1.669 KB
March 10 2021 14:36:36
root / root
0644
fetch-package-metadata.js
3.969 KB
March 10 2021 14:36:36
root / root
0644
fetch-package-metadata.md
1.769 KB
March 10 2021 14:36:36
root / root
0644
fund.js
4.908 KB
March 10 2021 14:36:36
root / root
0644
get.js
0.229 KB
March 10 2021 14:36:36
root / root
0644
help-search.js
5.642 KB
March 10 2021 14:36:36
root / root
0644
help.js
6.354 KB
March 10 2021 14:36:36
root / root
0644
hook.js
4.616 KB
March 10 2021 14:36:35
root / root
0644
init.js
2.739 KB
March 10 2021 14:36:36
root / root
0644
install-ci-test.js
0.475 KB
March 10 2021 14:36:36
root / root
0644
install-test.js
0.495 KB
March 10 2021 14:36:36
root / root
0644
install.js
36.47 KB
March 10 2021 14:36:36
root / root
0644
link.js
5.604 KB
March 10 2021 14:36:36
root / root
0644
logout.js
1.259 KB
March 10 2021 14:36:36
root / root
0644
ls.js
16.094 KB
March 10 2021 14:36:36
root / root
0644
npm.js
14.374 KB
March 10 2021 14:36:36
root / root
0644
org.js
4.176 KB
March 10 2021 14:36:36
root / root
0644
outdated.js
12.277 KB
March 10 2021 14:36:35
root / root
0644
owner.js
6.596 KB
March 10 2021 14:36:36
root / root
0644
pack.js
11.785 KB
March 10 2021 14:36:36
root / root
0644
ping.js
1.114 KB
March 10 2021 14:36:36
root / root
0644
prefix.js
0.322 KB
March 10 2021 14:36:36
root / root
0644
profile.js
11.134 KB
March 10 2021 14:36:36
root / root
0644
prune.js
2.228 KB
March 10 2021 14:36:36
root / root
0644
publish.js
5.141 KB
March 10 2021 14:36:36
root / root
0644
rebuild.js
2.093 KB
March 10 2021 14:36:36
root / root
0644
repo.js
1.437 KB
March 10 2021 14:36:35
root / root
0644
restart.js
0.063 KB
March 10 2021 14:36:36
root / root
0644
root.js
0.313 KB
March 10 2021 14:36:35
root / root
0644
run-script.js
5.41 KB
March 10 2021 14:36:36
root / root
0644
search.js
3.361 KB
March 10 2021 14:36:36
root / root
0644
set.js
0.27 KB
March 10 2021 14:36:36
root / root
0644
shrinkwrap.js
9.82 KB
March 10 2021 14:36:36
root / root
0644
star.js
2.106 KB
March 10 2021 14:36:36
root / root
0644
stars.js
1.029 KB
March 10 2021 14:36:36
root / root
0644
start.js
0.061 KB
March 10 2021 14:36:36
root / root
0644
stop.js
0.06 KB
March 10 2021 14:36:36
root / root
0644
substack.js
0.497 KB
March 10 2021 14:36:36
root / root
0644
team.js
4.613 KB
March 10 2021 14:36:36
root / root
0644
test.js
0.365 KB
March 10 2021 14:36:36
root / root
0644
token.js
6.658 KB
March 10 2021 14:36:36
root / root
0644
unbuild.js
4.271 KB
March 10 2021 14:36:36
root / root
0644
uninstall.js
2.208 KB
March 10 2021 14:36:35
root / root
0644
unpublish.js
3.51 KB
March 10 2021 14:36:36
root / root
0644
update.js
2.161 KB
March 10 2021 14:36:36
root / root
0644
version.js
9.794 KB
March 10 2021 14:36:36
root / root
0644
view.js
15.11 KB
March 10 2021 14:36:36
root / root
0644
visnup.js
4.008 KB
March 10 2021 14:36:35
root / root
0644
whoami.js
1.767 KB
March 10 2021 14:36:36
root / root
0644
xmas.js
1.624 KB
March 10 2021 14:36:35
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF