X7ROOT File Manager
Current Path:
/opt/alt/alt-nodejs19/root/usr/lib/node_modules/npm/lib/commands
opt
/
alt
/
alt-nodejs19
/
root
/
usr
/
lib
/
node_modules
/
npm
/
lib
/
commands
/
ðŸ“
..
📄
access.js
(6.08 KB)
📄
adduser.js
(1.32 KB)
📄
audit.js
(13.86 KB)
📄
bugs.js
(815 B)
📄
cache.js
(7.07 KB)
📄
ci.js
(3.51 KB)
📄
completion.js
(8.73 KB)
📄
config.js
(10.04 KB)
📄
dedupe.js
(1.4 KB)
📄
deprecate.js
(2.03 KB)
📄
diff.js
(8.12 KB)
📄
dist-tag.js
(5.45 KB)
📄
docs.js
(447 B)
📄
doctor.js
(11.51 KB)
📄
edit.js
(2 KB)
📄
exec.js
(2.54 KB)
📄
explain.js
(3.55 KB)
📄
explore.js
(2.3 KB)
📄
find-dupes.js
(622 B)
📄
fund.js
(6.51 KB)
📄
get.js
(524 B)
📄
help-search.js
(5.49 KB)
📄
help.js
(3.54 KB)
📄
hook.js
(3.77 KB)
📄
init.js
(6.9 KB)
📄
install-ci-test.js
(373 B)
📄
install-test.js
(370 B)
📄
install.js
(5.11 KB)
📄
link.js
(5.15 KB)
📄
ll.js
(234 B)
📄
login.js
(1.32 KB)
📄
logout.js
(1.3 KB)
📄
ls.js
(16.73 KB)
📄
org.js
(4.14 KB)
📄
outdated.js
(8.76 KB)
📄
owner.js
(5.91 KB)
📄
pack.js
(2.37 KB)
📄
ping.js
(917 B)
📄
pkg.js
(3.5 KB)
📄
prefix.js
(303 B)
📄
profile.js
(11.19 KB)
📄
prune.js
(779 B)
📄
publish.js
(6.5 KB)
📄
query.js
(2.9 KB)
📄
rebuild.js
(2.14 KB)
📄
repo.js
(1.24 KB)
📄
restart.js
(310 B)
📄
root.js
(258 B)
📄
run-script.js
(6.81 KB)
📄
search.js
(2.68 KB)
📄
set.js
(572 B)
📄
shrinkwrap.js
(2.64 KB)
📄
star.js
(1.87 KB)
📄
stars.js
(1.03 KB)
📄
start.js
(300 B)
📄
stop.js
(295 B)
📄
team.js
(4.44 KB)
📄
test.js
(295 B)
📄
token.js
(6.64 KB)
📄
uninstall.js
(1.51 KB)
📄
unpublish.js
(4.54 KB)
📄
unstar.js
(182 B)
📄
update.js
(1.71 KB)
📄
version.js
(3.58 KB)
📄
view.js
(14.38 KB)
📄
whoami.js
(474 B)
Editing: access.js
const path = require('path') const libnpmaccess = require('libnpmaccess') const npa = require('npm-package-arg') const readPackageJson = require('read-package-json-fast') const localeCompare = require('@isaacs/string-locale-compare')('en') const otplease = require('../utils/otplease.js') const getIdentity = require('../utils/get-identity.js') const BaseCommand = require('../base-command.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>]', ] 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 pkg = await readPackageJson(path.resolve(this.npm.prefix, 'package.json')) name = pkg.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 output = {} const lookup = { __proto__: null, read: 'read-only', write: 'read-write', } for (const item in items) { const val = items[item] output[item] = lookup[val] || val } if (this.npm.config.get('json')) { this.npm.output(JSON.stringify(output, null, 2)) } else { for (const item of Object.keys(output).sort(localeCompare)) { if (!limiter || limiter === item) { this.npm.output(`${item}: ${output[item]}`) } } } } } module.exports = Access
Upload File
Create Folder