$67 GRAYBYTE WORDPRESS FILE MANAGER $91

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/alt-nodejs20/root/usr/lib/node_modules/npm/lib/commands/

HOME
Current File : /opt/alt/alt-nodejs20/root/usr/lib/node_modules/npm/lib/commands//access.js
const libnpmaccess = require('libnpmaccess')
const npa = require('npm-package-arg')
const { output } = require('proc-log')
const pkgJson = require('@npmcli/package-json')
const localeCompare = require('@isaacs/string-locale-compare')('en')
const { otplease } = require('../utils/auth.js')
const getIdentity = require('../utils/get-identity.js')
const BaseCommand = require('../base-cmd.js')

const commands = [
  'get',
  'grant',
  'list',
  'revoke',
  'set',
]

const setCommands = [
  'status=public',
  'status=private',
  'mfa=none',
  'mfa=publish',
  'mfa=automation',
  '2fa=none',
  '2fa=publish',
  '2fa=automation',
]

class Access extends BaseCommand {
  static description = 'Set access level on published packages'
  static name = 'access'
  static params = [
    'json',
    'otp',
    'registry',
  ]

  static usage = [
    'list packages [<user>|<scope>|<scope:team>] [<package>]',
    'list collaborators [<package> [<user>]]',
    'get status [<package>]',
    'set status=public|private [<package>]',
    'set mfa=none|publish|automation [<package>]',
    'grant <read-only|read-write> <scope:team> [<package>]',
    'revoke <scope:team> [<package>]',
  ]

  static async completion (opts) {
    const argv = opts.conf.argv.remain
    if (argv.length === 2) {
      return commands
    }

    if (argv.length === 3) {
      switch (argv[2]) {
        case 'grant':
          return ['read-only', 'read-write']
        case 'revoke':
          return []
        case 'list':
        case 'ls':
          return ['packages', 'collaborators']
        case 'get':
          return ['status']
        case 'set':
          return setCommands
        default:
          throw new Error(argv[2] + ' not recognized')
      }
    }
  }

  async exec ([cmd, subcmd, ...args]) {
    if (!cmd) {
      throw this.usageError()
    }
    if (!commands.includes(cmd)) {
      throw this.usageError(`${cmd} is not a valid access command`)
    }
    // All commands take at least one more parameter so we can do this check up front
    if (!subcmd) {
      throw this.usageError()
    }

    switch (cmd) {
      case 'grant':
        if (!['read-only', 'read-write'].includes(subcmd)) {
          throw this.usageError('grant must be either `read-only` or `read-write`')
        }
        if (!args[0]) {
          throw this.usageError('`<scope:team>` argument is required')
        }
        return this.#grant(subcmd, args[0], args[1])
      case 'revoke':
        return this.#revoke(subcmd, args[0])
      case 'list':
      case 'ls':
        if (subcmd === 'packages') {
          return this.#listPackages(args[0], args[1])
        }
        if (subcmd === 'collaborators') {
          return this.#listCollaborators(args[0], args[1])
        }
        throw this.usageError(`list ${subcmd} is not a valid access command`)
      case 'get':
        if (subcmd !== 'status') {
          throw this.usageError(`get ${subcmd} is not a valid access command`)
        }
        return this.#getStatus(args[0])
      case 'set':
        if (!setCommands.includes(subcmd)) {
          throw this.usageError(`set ${subcmd} is not a valid access command`)
        }
        return this.#set(subcmd, args[0])
    }
  }

  async #grant (permissions, scope, pkg) {
    await libnpmaccess.setPermissions(scope, pkg, permissions, this.npm.flatOptions)
  }

  async #revoke (scope, pkg) {
    await libnpmaccess.removePermissions(scope, pkg, this.npm.flatOptions)
  }

  async #listPackages (owner, pkg) {
    if (!owner) {
      owner = await getIdentity(this.npm, this.npm.flatOptions)
    }
    const pkgs = await libnpmaccess.getPackages(owner, this.npm.flatOptions)
    this.#output(pkgs, pkg)
  }

  async #listCollaborators (pkg, user) {
    const pkgName = await this.#getPackage(pkg, false)
    const collabs = await libnpmaccess.getCollaborators(pkgName, this.npm.flatOptions)
    this.#output(collabs, user)
  }

  async #getStatus (pkg) {
    const pkgName = await this.#getPackage(pkg, false)
    const visibility = await libnpmaccess.getVisibility(pkgName, this.npm.flatOptions)
    this.#output({ [pkgName]: visibility.public ? 'public' : 'private' })
  }

  async #set (subcmd, pkg) {
    const [subkey, subval] = subcmd.split('=')
    switch (subkey) {
      case 'mfa':
      case '2fa':
        return this.#setMfa(pkg, subval)
      case 'status':
        return this.#setStatus(pkg, subval)
    }
  }

  async #setMfa (pkg, level) {
    const pkgName = await this.#getPackage(pkg, false)
    await otplease(this.npm, this.npm.flatOptions, (opts) => {
      return libnpmaccess.setMfa(pkgName, level, opts)
    })
  }

  async #setStatus (pkg, status) {
    // only scoped packages can have their access changed
    const pkgName = await this.#getPackage(pkg, true)
    if (status === 'private') {
      status = 'restricted'
    }
    await otplease(this.npm, this.npm.flatOptions, (opts) => {
      return libnpmaccess.setAccess(pkgName, status, opts)
    })
    return this.#getStatus(pkgName)
  }

  async #getPackage (name, requireScope) {
    if (!name) {
      try {
        const { content } = await pkgJson.normalize(this.npm.prefix)
        name = content.name
      } catch (err) {
        if (err.code === 'ENOENT') {
          throw Object.assign(new Error('no package name given and no package.json found'), {
            code: 'ENOENT',
          })
        } else {
          throw err
        }
      }
    }

    const spec = npa(name)
    if (requireScope && !spec.scope) {
      throw this.usageError('This command is only available for scoped packages.')
    }
    return name
  }

  #output (items, limiter) {
    const outputs = {}
    const lookup = {
      __proto__: null,
      read: 'read-only',
      write: 'read-write',
    }
    for (const item in items) {
      const val = items[item]
      outputs[item] = lookup[val] || val
    }
    if (this.npm.config.get('json')) {
      output.buffer(outputs)
    } else {
      for (const item of Object.keys(outputs).sort(localeCompare)) {
        if (!limiter || limiter === item) {
          output.standard(`${item}: ${outputs[item]}`)
        }
      }
    }
  }
}

module.exports = Access

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
12 Sep 2025 9.24 PM
root / root
0755
access.js
6.044 KB
28 Aug 2025 8.06 PM
root / root
0644
adduser.js
1.29 KB
28 Aug 2025 8.06 PM
root / root
0644
audit.js
3.146 KB
28 Aug 2025 8.06 PM
root / root
0644
bugs.js
0.827 KB
28 Aug 2025 8.06 PM
root / root
0644
cache.js
7.121 KB
28 Aug 2025 8.06 PM
root / root
0644
ci.js
4.224 KB
28 Aug 2025 8.06 PM
root / root
0644
completion.js
8.902 KB
28 Aug 2025 8.06 PM
root / root
0644
config.js
11.176 KB
28 Aug 2025 8.06 PM
root / root
0644
dedupe.js
1.409 KB
28 Aug 2025 8.06 PM
root / root
0644
deprecate.js
2.131 KB
28 Aug 2025 8.06 PM
root / root
0644
diff.js
8.143 KB
28 Aug 2025 8.06 PM
root / root
0644
dist-tag.js
5.521 KB
28 Aug 2025 8.06 PM
root / root
0644
docs.js
0.438 KB
28 Aug 2025 8.06 PM
root / root
0644
doctor.js
10.104 KB
28 Aug 2025 8.06 PM
root / root
0644
edit.js
1.762 KB
28 Aug 2025 8.06 PM
root / root
0644
exec.js
3.418 KB
28 Aug 2025 8.06 PM
root / root
0644
explain.js
3.575 KB
28 Aug 2025 8.06 PM
root / root
0644
explore.js
2.159 KB
28 Aug 2025 8.06 PM
root / root
0644
find-dupes.js
0.619 KB
28 Aug 2025 8.06 PM
root / root
0644
fund.js
6.455 KB
28 Aug 2025 8.06 PM
root / root
0644
get.js
0.563 KB
28 Aug 2025 8.06 PM
root / root
0644
help-search.js
5.518 KB
28 Aug 2025 8.06 PM
root / root
0644
help.js
3.664 KB
28 Aug 2025 8.06 PM
root / root
0644
hook.js
3.372 KB
28 Aug 2025 8.06 PM
root / root
0644
init.js
6.847 KB
28 Aug 2025 8.06 PM
root / root
0644
install-ci-test.js
0.364 KB
28 Aug 2025 8.06 PM
root / root
0644
install-test.js
0.361 KB
28 Aug 2025 8.06 PM
root / root
0644
install.js
5.153 KB
28 Aug 2025 8.06 PM
root / root
0644
link.js
5.296 KB
28 Aug 2025 8.06 PM
root / root
0644
ll.js
0.229 KB
28 Aug 2025 8.06 PM
root / root
0644
login.js
1.287 KB
28 Aug 2025 8.06 PM
root / root
0644
logout.js
1.419 KB
28 Aug 2025 8.06 PM
root / root
0644
ls.js
16.811 KB
28 Aug 2025 8.06 PM
root / root
0644
org.js
4.024 KB
28 Aug 2025 8.06 PM
root / root
0644
outdated.js
7.695 KB
28 Aug 2025 8.06 PM
root / root
0644
owner.js
5.848 KB
28 Aug 2025 8.06 PM
root / root
0644
pack.js
2.603 KB
28 Aug 2025 8.06 PM
root / root
0644
ping.js
0.853 KB
28 Aug 2025 8.06 PM
root / root
0644
pkg.js
3.556 KB
28 Aug 2025 8.06 PM
root / root
0644
prefix.js
0.327 KB
28 Aug 2025 8.06 PM
root / root
0644
profile.js
10.565 KB
28 Aug 2025 8.06 PM
root / root
0644
prune.js
0.78 KB
28 Aug 2025 8.06 PM
root / root
0644
publish.js
7.186 KB
28 Aug 2025 8.06 PM
root / root
0644
query.js
3.511 KB
28 Aug 2025 8.06 PM
root / root
0644
rebuild.js
2.188 KB
28 Aug 2025 8.06 PM
root / root
0644
repo.js
1.248 KB
28 Aug 2025 8.06 PM
root / root
0644
restart.js
0.303 KB
28 Aug 2025 8.06 PM
root / root
0644
root.js
0.288 KB
28 Aug 2025 8.06 PM
root / root
0644
run-script.js
6.04 KB
28 Aug 2025 8.06 PM
root / root
0644
sbom.js
4.508 KB
28 Aug 2025 8.06 PM
root / root
0644
search.js
1.833 KB
28 Aug 2025 8.06 PM
root / root
0644
set.js
0.655 KB
28 Aug 2025 8.06 PM
root / root
0644
shrinkwrap.js
2.648 KB
28 Aug 2025 8.06 PM
root / root
0644
star.js
1.866 KB
28 Aug 2025 8.06 PM
root / root
0644
stars.js
1.027 KB
28 Aug 2025 8.06 PM
root / root
0644
start.js
0.293 KB
28 Aug 2025 8.06 PM
root / root
0644
stop.js
0.288 KB
28 Aug 2025 8.06 PM
root / root
0644
team.js
4.356 KB
28 Aug 2025 8.06 PM
root / root
0644
test.js
0.288 KB
28 Aug 2025 8.06 PM
root / root
0644
token.js
6.016 KB
28 Aug 2025 8.06 PM
root / root
0644
uninstall.js
1.524 KB
28 Aug 2025 8.06 PM
root / root
0644
unpublish.js
5.268 KB
28 Aug 2025 8.06 PM
root / root
0644
unstar.js
0.179 KB
28 Aug 2025 8.06 PM
root / root
0644
update.js
1.724 KB
28 Aug 2025 8.06 PM
root / root
0644
version.js
3.543 KB
28 Aug 2025 8.06 PM
root / root
0644
view.js
12.799 KB
28 Aug 2025 8.06 PM
root / root
0644
whoami.js
0.515 KB
28 Aug 2025 8.06 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF