$41 GRAYBYTE WORDPRESS FILE MANAGER $79

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

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

HOME
Current File : /opt/alt/alt-nodejs16/root/usr/lib/node_modules/npm/lib/commands//config.js
// don't expand so that we only assemble the set of defaults when needed
const configDefs = require('../utils/config/index.js')

const mkdirp = require('mkdirp-infer-owner')
const { dirname, resolve } = require('path')
const { promisify } = require('util')
const fs = require('fs')
const readFile = promisify(fs.readFile)
const writeFile = promisify(fs.writeFile)
const { spawn } = require('child_process')
const { EOL } = require('os')
const ini = require('ini')
const localeCompare = require('@isaacs/string-locale-compare')('en')
const rpj = require('read-package-json-fast')
const log = require('../utils/log-shim.js')

// take an array of `[key, value, k2=v2, k3, v3, ...]` and turn into
// { key: value, k2: v2, k3: v3 }
const keyValues = args => {
  const kv = {}
  for (let i = 0; i < args.length; i++) {
    const arg = args[i].split('=')
    const key = arg.shift()
    const val = arg.length ? arg.join('=')
      : i < args.length - 1 ? args[++i]
      : ''
    kv[key.trim()] = val.trim()
  }
  return kv
}

const publicVar = k => {
  // _password
  if (k.startsWith('_')) {
    return false
  }
  // //localhost:8080/:_password
  if (k.startsWith('//') && k.includes(':_')) {
    return false
  }
  return true
}

const BaseCommand = require('../base-command.js')
class Config extends BaseCommand {
  static description = 'Manage the npm configuration files'
  static name = 'config'
  static usage = [
    'set <key>=<value> [<key>=<value> ...]',
    'get [<key> [<key> ...]]',
    'delete <key> [<key> ...]',
    'list [--json]',
    'edit',
  ]

  static params = [
    'json',
    'global',
    'editor',
    'location',
    'long',
  ]

  static ignoreImplicitWorkspace = false

  async completion (opts) {
    const argv = opts.conf.argv.remain
    if (argv[1] !== 'config') {
      argv.unshift('config')
    }

    if (argv.length === 2) {
      const cmds = ['get', 'set', 'delete', 'ls', 'rm', 'edit']
      if (opts.partialWord !== 'l') {
        cmds.push('list')
      }

      return cmds
    }

    const action = argv[2]
    switch (action) {
      case 'set':
        // todo: complete with valid values, if possible.
        if (argv.length > 3) {
          return []
        }

        // fallthrough
        /* eslint no-fallthrough:0 */
      case 'get':
      case 'delete':
      case 'rm':
        return Object.keys(configDefs.definitions)
      case 'edit':
      case 'list':
      case 'ls':
      default:
        return []
    }
  }

  async execWorkspaces (args, filters) {
    log.warn('config', 'This command does not support workspaces.')
    return this.exec(args)
  }

  async exec ([action, ...args]) {
    log.disableProgress()
    try {
      switch (action) {
        case 'set':
          await this.set(args)
          break
        case 'get':
          await this.get(args)
          break
        case 'delete':
        case 'rm':
        case 'del':
          await this.del(args)
          break
        case 'list':
        case 'ls':
          await (this.npm.flatOptions.json ? this.listJson() : this.list())
          break
        case 'edit':
          await this.edit()
          break
        default:
          throw this.usageError()
      }
    } finally {
      log.enableProgress()
    }
  }

  async set (args) {
    if (!args.length) {
      throw this.usageError()
    }

    const where = this.npm.flatOptions.location
    for (const [key, val] of Object.entries(keyValues(args))) {
      log.info('config', 'set %j %j', key, val)
      this.npm.config.set(key, val || '', where)
      if (!this.npm.config.validate(where)) {
        log.warn('config', 'omitting invalid config values')
      }
    }

    await this.npm.config.save(where)
  }

  async get (keys) {
    if (!keys.length) {
      return this.list()
    }

    const out = []
    for (const key of keys) {
      if (!publicVar(key)) {
        throw new Error(`The ${key} option is protected, and cannot be retrieved in this way`)
      }

      const pref = keys.length > 1 ? `${key}=` : ''
      out.push(pref + this.npm.config.get(key))
    }
    this.npm.output(out.join('\n'))
  }

  async del (keys) {
    if (!keys.length) {
      throw this.usageError()
    }

    const where = this.npm.flatOptions.location
    for (const key of keys) {
      this.npm.config.delete(key, where)
    }
    await this.npm.config.save(where)
  }

  async edit () {
    const e = this.npm.flatOptions.editor
    const where = this.npm.flatOptions.location
    const file = this.npm.config.data.get(where).source

    // save first, just to make sure it's synced up
    // this also removes all the comments from the last time we edited it.
    await this.npm.config.save(where)

    const data = (
      await readFile(file, 'utf8').catch(() => '')
    ).replace(/\r\n/g, '\n')
    const entries = Object.entries(configDefs.defaults)
    const defData = entries.reduce((str, [key, val]) => {
      const obj = { [key]: val }
      const i = ini.stringify(obj)
        .replace(/\r\n/g, '\n') // normalizes output from ini.stringify
        .replace(/\n$/m, '')
        .replace(/^/g, '; ')
        .replace(/\n/g, '\n; ')
        .split('\n')
      return str + '\n' + i
    }, '')

    const tmpData = `;;;;
; npm ${where}config file: ${file}
; this is a simple ini-formatted file
; lines that start with semi-colons are comments
; run \`npm help 7 config\` for documentation of the various options
;
; Configs like \`@scope:registry\` map a scope to a given registry url.
;
; Configs like \`//<hostname>/:_authToken\` are auth that is restricted
; to the registry host specified.

${data.split('\n').sort(localeCompare).join('\n').trim()}

;;;;
; all available options shown below with default values
;;;;

${defData}
`.split('\n').join(EOL)
    await mkdirp(dirname(file))
    await writeFile(file, tmpData, 'utf8')
    await new Promise((resolve, reject) => {
      const [bin, ...args] = e.split(/\s+/)
      const editor = spawn(bin, [...args, file], { stdio: 'inherit' })
      editor.on('exit', (code) => {
        if (code) {
          return reject(new Error(`editor process exited with code: ${code}`))
        }
        return resolve()
      })
    })
  }

  async list () {
    const msg = []
    // long does not have a flattener
    const long = this.npm.config.get('long')
    for (const [where, { data, source }] of this.npm.config.data.entries()) {
      if (where === 'default' && !long) {
        continue
      }

      const keys = Object.keys(data).sort(localeCompare)
      if (!keys.length) {
        continue
      }

      msg.push(`; "${where}" config from ${source}`, '')
      for (const k of keys) {
        const v = publicVar(k) ? JSON.stringify(data[k]) : '(protected)'
        const src = this.npm.config.find(k)
        const overridden = src !== where
        msg.push((overridden ? '; ' : '') +
          `${k} = ${v} ${overridden ? `; overridden by ${src}` : ''}`)
      }
      msg.push('')
    }

    if (!long) {
      msg.push(
        `; node bin location = ${process.execPath}`,
        `; node version = ${process.version}`,
        `; npm local prefix = ${this.npm.localPrefix}`,
        `; npm version = ${this.npm.version}`,
        `; cwd = ${process.cwd()}`,
        `; HOME = ${process.env.HOME}`,
        '; Run `npm config ls -l` to show all defaults.'
      )
      msg.push('')
    }

    if (!this.npm.global) {
      const pkgPath = resolve(this.npm.prefix, 'package.json')
      const pkg = await rpj(pkgPath).catch(() => ({}))

      if (pkg.publishConfig) {
        msg.push(`; "publishConfig" from ${pkgPath}`)
        msg.push('; This set of config values will be used at publish-time.', '')
        const pkgKeys = Object.keys(pkg.publishConfig).sort(localeCompare)
        for (const k of pkgKeys) {
          const v = publicVar(k) ? JSON.stringify(pkg.publishConfig[k]) : '(protected)'
          msg.push(`${k} = ${v}`)
        }
        msg.push('')
      }
    }

    this.npm.output(msg.join('\n').trim())
  }

  async listJson () {
    const publicConf = {}
    for (const key in this.npm.config.list[0]) {
      if (!publicVar(key)) {
        continue
      }

      publicConf[key] = this.npm.config.get(key)
    }
    this.npm.output(JSON.stringify(publicConf, null, 2))
  }
}

module.exports = Config


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
19 Mar 2026 8.38 AM
root / root
0755
access.js
5.454 KB
9 Mar 2026 6.51 AM
root / root
0644
adduser.js
2.2 KB
9 Mar 2026 6.51 AM
root / root
0644
audit.js
11.947 KB
9 Mar 2026 6.51 AM
root / root
0644
bin.js
0.712 KB
9 Mar 2026 6.51 AM
root / root
0644
birthday.js
0.496 KB
9 Mar 2026 6.51 AM
root / root
0644
bugs.js
0.796 KB
9 Mar 2026 6.51 AM
root / root
0644
cache.js
7.077 KB
9 Mar 2026 6.51 AM
root / root
0644
ci.js
3.628 KB
9 Mar 2026 6.51 AM
root / root
0644
completion.js
8.91 KB
9 Mar 2026 6.51 AM
root / root
0644
config.js
8.113 KB
9 Mar 2026 6.51 AM
root / root
0644
dedupe.js
1.372 KB
9 Mar 2026 6.51 AM
root / root
0644
deprecate.js
2.06 KB
9 Mar 2026 6.51 AM
root / root
0644
diff.js
8.097 KB
9 Mar 2026 6.51 AM
root / root
0644
dist-tag.js
5.473 KB
9 Mar 2026 6.51 AM
root / root
0644
docs.js
0.437 KB
9 Mar 2026 6.51 AM
root / root
0644
doctor.js
9.225 KB
9 Mar 2026 6.51 AM
root / root
0644
edit.js
1.999 KB
9 Mar 2026 6.51 AM
root / root
0644
exec.js
2.44 KB
9 Mar 2026 6.51 AM
root / root
0644
explain.js
3.554 KB
9 Mar 2026 6.51 AM
root / root
0644
explore.js
2.331 KB
9 Mar 2026 6.51 AM
root / root
0644
find-dupes.js
0.588 KB
9 Mar 2026 6.51 AM
root / root
0644
fund.js
6.371 KB
9 Mar 2026 6.51 AM
root / root
0644
get.js
0.512 KB
9 Mar 2026 6.51 AM
root / root
0644
help-search.js
5.62 KB
9 Mar 2026 6.51 AM
root / root
0644
help.js
4.528 KB
9 Mar 2026 6.51 AM
root / root
0644
hook.js
3.933 KB
9 Mar 2026 6.51 AM
root / root
0644
init.js
6.809 KB
9 Mar 2026 6.51 AM
root / root
0644
install-ci-test.js
0.368 KB
9 Mar 2026 6.51 AM
root / root
0644
install-test.js
0.365 KB
9 Mar 2026 6.51 AM
root / root
0644
install.js
5.113 KB
9 Mar 2026 6.51 AM
root / root
0644
link.js
5.021 KB
9 Mar 2026 6.51 AM
root / root
0644
ll.js
0.229 KB
9 Mar 2026 6.51 AM
root / root
0644
logout.js
1.345 KB
9 Mar 2026 6.51 AM
root / root
0644
ls.js
16.944 KB
9 Mar 2026 6.51 AM
root / root
0644
org.js
4.204 KB
9 Mar 2026 6.51 AM
root / root
0644
outdated.js
8.838 KB
9 Mar 2026 6.51 AM
root / root
0644
owner.js
5.877 KB
9 Mar 2026 6.51 AM
root / root
0644
pack.js
2.362 KB
9 Mar 2026 6.51 AM
root / root
0644
ping.js
0.854 KB
9 Mar 2026 6.51 AM
root / root
0644
pkg.js
3.471 KB
9 Mar 2026 6.51 AM
root / root
0644
prefix.js
0.335 KB
9 Mar 2026 6.51 AM
root / root
0644
profile.js
11.255 KB
9 Mar 2026 6.51 AM
root / root
0644
prune.js
0.761 KB
9 Mar 2026 6.51 AM
root / root
0644
publish.js
6.329 KB
9 Mar 2026 6.51 AM
root / root
0644
query.js
2.806 KB
9 Mar 2026 6.51 AM
root / root
0644
rebuild.js
2.162 KB
9 Mar 2026 6.51 AM
root / root
0644
repo.js
1.242 KB
9 Mar 2026 6.51 AM
root / root
0644
restart.js
0.343 KB
9 Mar 2026 6.51 AM
root / root
0644
root.js
0.291 KB
9 Mar 2026 6.51 AM
root / root
0644
run-script.js
6.901 KB
9 Mar 2026 6.51 AM
root / root
0644
search.js
2.716 KB
9 Mar 2026 6.51 AM
root / root
0644
set-script.js
2.635 KB
9 Mar 2026 6.51 AM
root / root
0644
set.js
0.559 KB
9 Mar 2026 6.51 AM
root / root
0644
shrinkwrap.js
2.642 KB
9 Mar 2026 6.51 AM
root / root
0644
star.js
1.866 KB
9 Mar 2026 6.51 AM
root / root
0644
stars.js
1.027 KB
9 Mar 2026 6.51 AM
root / root
0644
start.js
0.333 KB
9 Mar 2026 6.51 AM
root / root
0644
stop.js
0.328 KB
9 Mar 2026 6.51 AM
root / root
0644
team.js
4.438 KB
9 Mar 2026 6.51 AM
root / root
0644
test.js
0.328 KB
9 Mar 2026 6.51 AM
root / root
0644
token.js
6.791 KB
9 Mar 2026 6.51 AM
root / root
0644
uninstall.js
1.516 KB
9 Mar 2026 6.51 AM
root / root
0644
unpublish.js
4.509 KB
9 Mar 2026 6.51 AM
root / root
0644
unstar.js
0.178 KB
9 Mar 2026 6.51 AM
root / root
0644
update.js
1.697 KB
9 Mar 2026 6.51 AM
root / root
0644
version.js
3.604 KB
9 Mar 2026 6.51 AM
root / root
0644
view.js
14.378 KB
9 Mar 2026 6.51 AM
root / root
0644
whoami.js
0.502 KB
9 Mar 2026 6.51 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF