@codeworksh/cli 0.0.1-dev.20260918042316 → 0.0.1-dev.20260922183613
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -0
- package/add--i7mPR73.mjs +81 -0
- package/add--i7mPR73.mjs.map +1 -0
- package/{catalog-Cv1zoZ5S.mjs → catalog-DJxy_lne.mjs} +2 -2
- package/{catalog-Cv1zoZ5S.mjs.map → catalog-DJxy_lne.mjs.map} +1 -1
- package/check-Dq2WOgap.mjs +47 -0
- package/check-Dq2WOgap.mjs.map +1 -0
- package/commonjs-BDiLMfFF.mjs +160 -0
- package/commonjs-BDiLMfFF.mjs.map +1 -0
- package/definitions-Dfwyyv_K.mjs +3348 -0
- package/definitions-Dfwyyv_K.mjs.map +1 -0
- package/entries-Gfsq7U4P.mjs +48 -0
- package/entries-Gfsq7U4P.mjs.map +1 -0
- package/{error-zJGKAF4a.mjs → error-BrbT9_4g.mjs} +2470 -1853
- package/error-BrbT9_4g.mjs.map +1 -0
- package/{generate-DdscbX3w.mjs → generate-DrGYpD3l.mjs} +3 -3
- package/{generate-DdscbX3w.mjs.map → generate-DrGYpD3l.mjs.map} +1 -1
- package/{harness-BBTdWdhx.mjs → harness-Bgvrr0ZB.mjs} +2 -2
- package/{harness-BBTdWdhx.mjs.map → harness-Bgvrr0ZB.mjs.map} +1 -1
- package/index.d.mts +6 -1
- package/index.mjs +22 -6
- package/index.mjs.map +1 -1
- package/install-DoO4D3fk.mjs +53 -0
- package/install-DoO4D3fk.mjs.map +1 -0
- package/lib-BkWR53Bz.mjs +37659 -0
- package/lib-BkWR53Bz.mjs.map +1 -0
- package/lib-CyynPpjH.mjs +846 -0
- package/lib-CyynPpjH.mjs.map +1 -0
- package/lib-Dw7R2suc.mjs +16078 -0
- package/lib-Dw7R2suc.mjs.map +1 -0
- package/lib-JQygPqgO.mjs +10868 -0
- package/lib-JQygPqgO.mjs.map +1 -0
- package/link-B1zfETsS.mjs +40 -0
- package/link-B1zfETsS.mjs.map +1 -0
- package/list-3OR68HpY.mjs +76 -0
- package/list-3OR68HpY.mjs.map +1 -0
- package/{list-C6BrwuV-.mjs → list-CfPfmfe0.mjs} +4 -4
- package/{list-C6BrwuV-.mjs.map → list-CfPfmfe0.mjs.map} +1 -1
- package/login-GFV3Z9f2.mjs +45 -0
- package/login-GFV3Z9f2.mjs.map +1 -0
- package/logout-D17TQUfo.mjs +29 -0
- package/logout-D17TQUfo.mjs.map +1 -0
- package/p-map-C2WSUhyP.mjs +116 -0
- package/p-map-C2WSUhyP.mjs.map +1 -0
- package/package.json +12 -9
- package/{providers-fO-GJuXn.mjs → providers-DLXs9aWZ.mjs} +4 -4
- package/{providers-fO-GJuXn.mjs.map → providers-DLXs9aWZ.mjs.map} +1 -1
- package/refresh-BTNuP1zL.mjs +35 -0
- package/refresh-BTNuP1zL.mjs.map +1 -0
- package/reload-BzwsCBQq.mjs +26 -0
- package/reload-BzwsCBQq.mjs.map +1 -0
- package/remove-DgB3l5JL.mjs +36 -0
- package/remove-DgB3l5JL.mjs.map +1 -0
- package/{run-CgPOJ-wJ.mjs → run-BVo4XsL6.mjs} +11 -8
- package/run-BVo4XsL6.mjs.map +1 -0
- package/runtime-Dl621FOp.mjs +345 -0
- package/runtime-Dl621FOp.mjs.map +1 -0
- package/{serve-Du6luqoi.mjs → serve-Dpep18-A.mjs} +93 -17
- package/serve-Dpep18-A.mjs.map +1 -0
- package/settings-C52IrA72.mjs +215 -0
- package/settings-C52IrA72.mjs.map +1 -0
- package/shared-Uwjcofff.mjs +115 -0
- package/shared-Uwjcofff.mjs.map +1 -0
- package/status-DPYq2Sx4.mjs +31 -0
- package/status-DPYq2Sx4.mjs.map +1 -0
- package/type-defs-BZxrtlVD.mjs +538 -0
- package/type-defs-BZxrtlVD.mjs.map +1 -0
- package/update-CJrBbHwq.mjs +44 -0
- package/update-CJrBbHwq.mjs.map +1 -0
- package/valid-BWgW_TUl.mjs +354 -0
- package/valid-BWgW_TUl.mjs.map +1 -0
- package/error-zJGKAF4a.mjs.map +0 -1
- package/run-CgPOJ-wJ.mjs.map +0 -1
- package/runtime-DuL-GGrx.mjs +0 -163
- package/runtime-DuL-GGrx.mjs.map +0 -1
- package/serve-Du6luqoi.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib-CyynPpjH.mjs","names":["resolve"],"sources":["../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/nerf-dart.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/env-replace.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/parse-field.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/set-envs.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/errors.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/type-description.js","../../../../node_modules/.pnpm/@npmcli+config@11.0.1/node_modules/@npmcli/config/lib/index.js"],"sourcesContent":["const { URL } = require('node:url')\n\n/**\n * Maps a URL to an identifier.\n *\n * Name courtesy schiffertronix media LLC, a New Jersey corporation\n *\n * @param {String} uri The URL to be nerfed.\n *\n * @returns {String} A nerfed URL.\n */\nmodule.exports = (url) => {\n const parsed = new URL(url)\n const from = `${parsed.protocol}//${parsed.host}${parsed.pathname}`\n const rel = new URL('.', from)\n const res = `//${rel.host}${rel.pathname}`\n return res\n}\n","// replace any ${ENV} values with the appropriate environ.\n// optional \"?\" modifier can be used like this: ${ENV?} so in case of the variable being not defined, it evaluates into empty string.\n\nconst envExpr = /(?<!\\\\)(\\\\*)\\$\\{([^${}?]+)(\\?)?\\}/g\n\nmodule.exports = (f, env) => f.replace(envExpr, (orig, esc, name, modifier) => {\n const fallback = modifier === '?' ? '' : `$\\{${name}}`\n const val = env[name] !== undefined ? env[name] : fallback\n\n // consume the escape chars that are relevant.\n if (esc.length % 2) {\n return orig.slice((esc.length + 1) / 2)\n }\n\n return (esc.slice(esc.length / 2)) + val\n})\n","// Parse a field, coercing it to the best type available.\nconst typeDefs = require('./type-defs.js')\nconst envReplace = require('./env-replace.js')\nconst { resolve } = require('node:path')\n\nconst { parse: umaskParse } = require('./umask.js')\n\nconst parseField = (f, key, opts, listElement = false) => {\n if (typeof f !== 'string' && !Array.isArray(f)) {\n return f\n }\n\n const { platform, types, home, env } = opts\n\n // type can be array or a single thing. coerce to array.\n const typeList = new Set([].concat(types[key]))\n const isPath = typeList.has(typeDefs.path.type)\n const isBool = typeList.has(typeDefs.Boolean.type)\n const isString = isPath || typeList.has(typeDefs.String.type)\n const isUmask = typeList.has(typeDefs.Umask.type)\n const isNumber = typeList.has(typeDefs.Number.type)\n const isList = !listElement && typeList.has(Array)\n const isDate = typeList.has(typeDefs.Date.type)\n\n if (Array.isArray(f)) {\n return !isList ? f : f.map(field => parseField(field, key, opts, true))\n }\n\n // now we know it's a string\n f = f.trim()\n\n // list types get put in the environment separated by double-\\n\n // usually a single \\n would suffice, but ca/cert configs can contain\n // line breaks and multiple entries.\n if (isList) {\n return parseField(f.split('\\n\\n'), key, opts)\n }\n\n // --foo is like --foo=true for boolean types\n if (isBool && !isString && f === '') {\n return true\n }\n\n // string types can be the string 'true', 'false', etc.\n // otherwise, parse these values out\n if (!isString && !isPath && !isNumber) {\n switch (f) {\n case 'true': return true\n case 'false': return false\n case 'null': return null\n case 'undefined': return undefined\n }\n }\n\n f = envReplace(f, env)\n\n if (isDate) {\n return new Date(f)\n }\n\n if (isPath) {\n const homePattern = platform === 'win32' ? /^~(\\/|\\\\)/ : /^~\\//\n if (homePattern.test(f) && home) {\n f = resolve(home, f.slice(2))\n } else {\n f = resolve(f)\n }\n }\n\n if (isUmask) {\n try {\n return umaskParse(f)\n } catch (er) {\n // let it warn later when we validate\n return f\n }\n }\n\n if (isNumber && !isNaN(f)) {\n f = +f\n }\n\n return f\n}\n\nmodule.exports = parseField\n","// Set environment variables for any non-default configs,\n// so that they're already there when we run lifecycle scripts.\n//\n// See https://github.com/npm/rfcs/pull/90\n\n// Return the env key if this is a thing that belongs in the env.\n// Ie, if the key isn't a @scope, //nerf.dart, or _private,\n// and the value is a string or array. Otherwise return false.\nconst envKey = (key, val) => {\n return !/^[/@_]/.test(key) &&\n (typeof envVal(val) === 'string') &&\n `npm_config_${key.replace(/-/g, '_').toLowerCase()}`\n}\n\nconst envVal = val => Array.isArray(val) ? val.map(v => envVal(v)).join('\\n\\n')\n : val === null || val === undefined || val === false ? ''\n : typeof val === 'object' ? null\n : String(val)\n\nconst sameConfigValue = (def, val) =>\n !Array.isArray(val) || !Array.isArray(def) ? def === val\n : sameArrayValue(def, val)\n\nconst sameArrayValue = (def, val) => {\n if (def.length !== val.length) {\n return false\n }\n\n for (let i = 0; i < def.length; i++) {\n /* istanbul ignore next - there are no array configs where the default\n * is not an empty array, so this loop is a no-op, but it's the correct\n * thing to do if we ever DO add a config like that. */\n if (def[i] !== val[i]) {\n return false\n }\n }\n return true\n}\n\nconst setEnv = (env, rawKey, rawVal) => {\n const val = envVal(rawVal)\n const key = envKey(rawKey, val)\n if (key && val !== null) {\n env[key] = val\n }\n}\n\nconst setEnvs = (config) => {\n // This ensures that all npm config values that are not the defaults are\n // shared appropriately with child processes, without false positives.\n const {\n env,\n defaults,\n definitions,\n list: [cliConf, envConf],\n } = config\n\n env.INIT_CWD = process.cwd()\n\n // if the key is deprecated, skip it always.\n // if the key is the default value,\n // if the environ is NOT the default value,\n // set the environ\n // else skip it, it's fine\n // if the key is NOT the default value,\n // if the env is setting it, then leave it (already set)\n // otherwise, set the env\n const cliSet = new Set(Object.keys(cliConf))\n const envSet = new Set(Object.keys(envConf))\n for (const key in cliConf) {\n const { deprecated, envExport = true } = definitions[key] || {}\n if (deprecated || envExport === false) {\n continue\n }\n\n if (sameConfigValue(defaults[key], cliConf[key])) {\n // config is the default, if the env thought different, then we\n // have to set it BACK to the default in the environment.\n if (!sameConfigValue(envConf[key], cliConf[key])) {\n setEnv(env, key, cliConf[key])\n }\n } else {\n // config is not the default. if the env wasn't the one to set\n // it that way, then we have to put it in the env\n if (!(envSet.has(key) && !cliSet.has(key))) {\n setEnv(env, key, cliConf[key])\n }\n }\n }\n\n // also set some other common nice envs that we want to rely on\n env.HOME = config.home\n // TODO this may not be the best away to persist these\n env.npm_config_global_prefix = config.globalPrefix\n env.npm_config_local_prefix = config.localPrefix\n if (cliConf.editor) {\n env.EDITOR = cliConf.editor\n }\n\n // note: this doesn't affect the *current* node process, of course, since\n // it's already started, but it does affect the options passed to scripts.\n if (cliConf['node-options']) {\n env.NODE_OPTIONS = cliConf['node-options']\n }\n // the node-gyp bin uses this so we always set it\n env.npm_config_node_gyp = cliConf['node-gyp']\n // this doesn't have a full definition so we manually export it here\n env.npm_config_npm_version = cliConf['npm-version'] || 'unknown'\n env.npm_execpath = config.npmBin\n env.NODE = env.npm_node_execpath = config.execPath\n}\n\nmodule.exports = setEnvs\n","'use strict'\n\nclass ErrInvalidAuth extends Error {\n constructor (problems) {\n let message = 'Invalid auth configuration found: '\n message += problems.map((problem) => {\n // istanbul ignore else\n if (problem.action === 'delete') {\n return `\\`${problem.key}\\` is not allowed in ${problem.where} config`\n } else if (problem.action === 'rename') {\n return `\\`${problem.from}\\` must be renamed to \\`${problem.to}\\` in ${problem.where} config`\n }\n }).join(', ')\n message += '\\nPlease run `npm config fix` to repair your configuration.`'\n super(message)\n this.code = 'ERR_INVALID_AUTH'\n this.problems = problems\n }\n}\n\nmodule.exports = {\n ErrInvalidAuth,\n}\n","// return the description of the valid values of a field\n// returns a string for one thing, or an array of descriptions\nconst typeDefs = require('./type-defs.js')\nconst typeDescription = t => {\n if (!t || typeof t !== 'function' && typeof t !== 'object') {\n return t\n }\n\n if (Array.isArray(t)) {\n return t.map(t => typeDescription(t))\n }\n\n for (const { type, description } of Object.values(typeDefs)) {\n if (type === t) {\n return description || type\n }\n }\n\n return t\n}\nmodule.exports = t => [].concat(typeDescription(t)).filter(t => t !== undefined)\n","// TODO: set the scope config from package.json or explicit cli config\nconst { walkUp } = require('walk-up-path')\nconst ini = require('ini')\nconst nopt = require('nopt')\nconst { log, time } = require('proc-log')\n\nconst { resolve, dirname, join } = require('node:path')\nconst { homedir } = require('node:os')\nconst {\n readFile,\n writeFile,\n chmod,\n unlink,\n stat,\n mkdir,\n} = require('node:fs/promises')\n\n// TODO global-prefix and local-prefix are set by lib/set-envs.js. This may not be the best way to persist those, if we even want to persist them (see set-envs.js)\nconst internalEnv = [\n 'npm-version',\n 'global-prefix',\n 'local-prefix',\n]\n\nconst fileExists = (...p) => stat(resolve(...p))\n .then((st) => st.isFile())\n .catch(() => false)\n\nconst dirExists = (...p) => stat(resolve(...p))\n .then((st) => st.isDirectory())\n .catch(() => false)\n\nconst hasOwnProperty = (obj, key) =>\n Object.prototype.hasOwnProperty.call(obj, key)\n\nconst typeDefs = require('./type-defs.js')\nconst nerfDart = require('./nerf-dart.js')\nconst envReplace = require('./env-replace.js')\nconst parseField = require('./parse-field.js')\nconst setEnvs = require('./set-envs.js')\n\n// types that can be saved back to\nconst confFileTypes = new Set([\n 'global',\n 'user',\n 'project',\n])\n\nconst confTypes = new Set([\n 'default',\n 'builtin',\n ...confFileTypes,\n 'env',\n 'cli',\n])\n\nclass Config {\n #loaded = false\n #flatten\n // populated the first time we flatten the object\n #flatOptions = null\n #warnings = []\n // Unknown configs collected during load(), aggregated and thrown by `BaseCommand.validateCli` once command-specific definitions are known.\n // Entries: { where, key, baseKey, source }. `baseKey` is non-null only for scoped keys (e.g. `<nerfdart>:foo`) and holds the trailing segment.\n // `env` and `publishConfig` entries warn instead of error.\n #unknownConfigs = []\n\n static get typeDefs () {\n return typeDefs\n }\n\n constructor ({\n definitions,\n shorthands,\n flatten,\n nerfDarts = [],\n npmPath,\n\n // options just to override in tests, mostly\n env = process.env,\n argv = process.argv,\n platform = process.platform,\n execPath = process.execPath,\n cwd = process.cwd(),\n excludeNpmCwd = false,\n warn = true,\n }) {\n this.nerfDarts = nerfDarts\n this.definitions = definitions\n // turn the definitions into nopt's weirdo syntax\n const { types, defaults, deprecated } = getTypesFromDefinitions(definitions)\n this.deprecated = deprecated\n\n this.#flatten = flatten\n this.types = types\n this.shorthands = shorthands\n this.defaults = defaults\n\n this.npmPath = npmPath\n this.npmBin = join(this.npmPath, 'bin/npm-cli.js')\n this.argv = argv\n this.env = env\n this.execPath = execPath\n this.platform = platform\n this.cwd = cwd\n this.excludeNpmCwd = excludeNpmCwd\n\n // set when we load configs\n this.globalPrefix = null\n this.localPrefix = null\n this.localPackage = null\n\n // defaults to env.HOME, but will always be *something*\n this.home = null\n\n // set up the prototype chain of config objects\n const wheres = [...confTypes]\n this.data = new Map()\n let parent = null\n for (const where of wheres) {\n this.data.set(where, parent = new ConfigData(parent))\n }\n\n this.data.set = () => {\n throw new Error('cannot change internal config data structure')\n }\n this.data.delete = () => {\n throw new Error('cannot change internal config data structure')\n }\n\n this.sources = new Map([])\n\n for (const { data } of this.data.values()) {\n this.list.unshift(data)\n }\n\n this.#loaded = false\n this.warn = warn\n }\n\n get list () {\n const list = []\n for (const { data } of this.data.values()) {\n list.unshift(data)\n }\n return list\n }\n\n get loaded () {\n return this.#loaded\n }\n\n get prefix () {\n return this.#get('global') ? this.globalPrefix : this.localPrefix\n }\n\n // return the location where key is found.\n find (key) {\n if (!this.loaded) {\n throw new Error('call config.load() before reading values')\n }\n\n // have to look in reverse order\n const entries = [...this.data.entries()]\n for (let i = entries.length - 1; i > -1; i--) {\n const [where, { data }] = entries[i]\n if (hasOwnProperty(data, key)) {\n return where\n }\n }\n return null\n }\n\n get (key, where) {\n if (!this.loaded) {\n throw new Error('call config.load() before reading values')\n }\n return this.#get(key, where)\n }\n\n // we need to get values sometimes, so use this internal one to do so\n // while in the process of loading.\n #get (key, where = null) {\n if (where !== null && !confTypes.has(where)) {\n throw new Error('invalid config location param: ' + where)\n }\n const { data } = this.data.get(where || 'cli')\n return where === null || hasOwnProperty(data, key) ? data[key] : undefined\n }\n\n set (key, val, where = 'cli') {\n if (!this.loaded) {\n throw new Error('call config.load() before setting values')\n }\n if (!confTypes.has(where)) {\n throw new Error('invalid config location param: ' + where)\n }\n this.#checkDeprecated(key)\n const { data, raw } = this.data.get(where)\n data[key] = val\n if (['global', 'user', 'project'].includes(where)) {\n raw[key] = val\n }\n\n // this is now dirty, the next call to this.valid will have to check it\n this.data.get(where)[_valid] = null\n\n // the flat options are invalidated, regenerate next time they're needed\n this.#flatOptions = null\n }\n\n get flat () {\n if (this.#flatOptions) {\n return this.#flatOptions\n }\n\n // create the object for flat options passed to deps\n const timeEnd = time.start('config:load:flatten')\n this.#flatOptions = {}\n // walk from least priority to highest\n for (const { data } of this.data.values()) {\n this.#flatten(data, this.#flatOptions)\n }\n this.#flatOptions.nodeBin = this.execPath\n this.#flatOptions.npmBin = this.npmBin\n timeEnd()\n\n return this.#flatOptions\n }\n\n delete (key, where = 'cli') {\n if (!this.loaded) {\n throw new Error('call config.load() before deleting values')\n }\n if (!confTypes.has(where)) {\n throw new Error('invalid config location param: ' + where)\n }\n const { data, raw } = this.data.get(where)\n delete data[key]\n if (['global', 'user', 'project'].includes(where)) {\n delete raw[key]\n }\n }\n\n async load () {\n if (this.loaded) {\n throw new Error('attempting to load npm config multiple times')\n }\n\n // first load the defaults, which sets the global prefix\n this.loadDefaults()\n\n // next load the builtin config, as this sets new effective defaults\n await this.loadBuiltinConfig()\n\n // cli and env are not async, and can set the prefix, relevant to project\n this.loadCLI()\n this.loadEnv()\n\n // next project config, which can affect userconfig location\n await this.loadProjectConfig()\n\n // then user config, which can affect globalconfig location\n await this.loadUserConfig()\n\n // last but not least, global config file\n await this.loadGlobalConfig()\n\n // set this before calling setEnvs, so that we don't have to share\n // private attributes, as that module also does a bunch of get operations\n this.#loaded = true\n\n // set proper globalPrefix now that everything is loaded\n this.globalPrefix = this.get('prefix')\n\n this.setEnvs()\n }\n\n loadDefaults () {\n this.loadGlobalPrefix()\n this.loadHome()\n\n const defaultsObject = {\n ...this.defaults,\n prefix: this.globalPrefix,\n }\n\n try {\n // This does not have an actual definition because this is not user definable\n defaultsObject['npm-version'] = require(join(this.npmPath, 'package.json')).version\n } catch {\n // in some weird state where the passed in npmPath does not have a package.json\n // this will never happen in npm, but is guarded here in case this is consumed\n // in other ways + tests\n }\n\n this.#loadObject(defaultsObject, 'default', 'default values')\n\n const { data } = this.data.get('default')\n\n // if the prefix is set on cli, env, or userconfig, then we need to\n // default the globalconfig file to that location, instead of the default\n // global prefix. It's weird that `npm get globalconfig --prefix=/foo`\n // returns `/foo/etc/npmrc`, but better to not change it at this point.\n // define a custom getter, but turn into a normal prop\n // if we set it. otherwise it can't be set on child objects\n Object.defineProperty(data, 'globalconfig', {\n get: () => resolve(this.#get('prefix'), 'etc/npmrc'),\n set (value) {\n Object.defineProperty(data, 'globalconfig', {\n value,\n configurable: true,\n writable: true,\n enumerable: true,\n })\n },\n configurable: true,\n enumerable: true,\n })\n\n // like globalconfig, the global-ignore-file default is computed from\n // the current prefix. since prefix may be overridden after defaults\n // load (via cli, env, or userconfig), expose a getter and only freeze\n // to a value once explicitly set.\n Object.defineProperty(data, 'global-ignore-file', {\n get: () => resolve(this.#get('prefix'), 'etc/npmignore'),\n set (value) {\n Object.defineProperty(data, 'global-ignore-file', {\n value,\n configurable: true,\n writable: true,\n enumerable: true,\n })\n },\n configurable: true,\n enumerable: true,\n })\n }\n\n loadHome () {\n this.home = this.env.HOME || homedir()\n }\n\n loadGlobalPrefix () {\n if (this.globalPrefix) {\n throw new Error('cannot load default global prefix more than once')\n }\n\n if (this.env.PREFIX) {\n this.globalPrefix = this.env.PREFIX\n } else if (this.platform === 'win32') {\n // c:\\node\\node.exe --> prefix=c:\\node\\\n this.globalPrefix = dirname(this.execPath)\n } else {\n // /usr/local/bin/node --> prefix=/usr/local\n this.globalPrefix = dirname(dirname(this.execPath))\n\n // destdir only is respected on Unix\n if (this.env.DESTDIR) {\n this.globalPrefix = join(this.env.DESTDIR, this.globalPrefix)\n }\n }\n }\n\n loadEnv () {\n const conf = Object.create(null)\n for (const [envKey, envVal] of Object.entries(this.env)) {\n if (!/^npm_config_/i.test(envKey) || envVal === '') {\n continue\n }\n let key = envKey.slice('npm_config_'.length)\n if (!key.startsWith('//')) { // don't normalize nerf-darted keys\n key = key.replace(/(?!^)_/g, '-') // don't replace _ at the start of the key\n .toLowerCase()\n }\n conf[key] = envVal\n }\n this.#loadObject(conf, 'env', 'environment')\n }\n\n loadCLI () {\n for (const s of Object.keys(this.shorthands)) {\n if (s.length > 1 && this.argv.includes(`-${s}`)) {\n throw Object.assign(\n new Error(`-${s} is not a valid single-hyphen cli flag. Did you mean --${s}?`),\n { code: 'EUNKNOWNCONFIG' }\n )\n }\n }\n nopt.invalidHandler = (k, val, type) =>\n this.invalidHandler(k, val, type, 'command line options', 'cli')\n nopt.unknownHandler = (k, next) => this.unknownHandler(k, next)\n nopt.abbrevHandler = this.abbrevHandler\n const conf = nopt(this.types, this.shorthands, this.argv)\n nopt.invalidHandler = null\n nopt.unknownHandler = null\n this.parsedArgv = conf.argv\n delete conf.argv\n this.#loadObject(conf, 'cli', 'command line options')\n }\n\n get valid () {\n for (const [where, { valid }] of this.data.entries()) {\n if (valid === false || valid === null && !this.validate(where)) {\n return false\n }\n }\n return true\n }\n\n validate (where) {\n if (!where) {\n let valid = true\n const authProblems = []\n\n for (const entryWhere of this.data.keys()) {\n // no need to validate our defaults, we know they're fine\n // cli was already validated when parsed the first time\n if (entryWhere === 'default' || entryWhere === 'builtin' || entryWhere === 'cli') {\n continue\n }\n const ret = this.validate(entryWhere)\n valid = valid && ret\n\n if (['global', 'user', 'project'].includes(entryWhere)) {\n // after validating everything else, we look for old auth configs we no longer support\n // if these keys are found, we build up a list of them and the appropriate action and\n // attach it as context on the thrown error\n\n // first, keys that should be removed\n for (const key of ['_authtoken', '-authtoken']) {\n if (this.get(key, entryWhere)) {\n authProblems.push({ action: 'delete', key, where: entryWhere })\n }\n }\n\n // NOTE we pull registry without restricting to the current 'where' because we want to\n // suggest scoping things to the registry they would be applied to, which is the default\n // regardless of where it was defined\n const nerfedReg = nerfDart(this.get('registry'))\n // keys that should be nerfed but currently are not\n for (const key of ['_auth', '_authToken', 'username', '_password']) {\n if (this.get(key, entryWhere)) {\n // username and _password must both exist in the same file to be recognized correctly\n if (key === 'username' && !this.get('_password', entryWhere)) {\n authProblems.push({ action: 'delete', key, where: entryWhere })\n } else if (key === '_password' && !this.get('username', entryWhere)) {\n authProblems.push({ action: 'delete', key, where: entryWhere })\n } else {\n authProblems.push({\n action: 'rename',\n from: key,\n to: `${nerfedReg}:${key}`,\n where: entryWhere,\n })\n }\n }\n }\n\n // Top-level `email`, `certfile`, and `keyfile` must be in nerfdart form.\n // certfile/keyfile are an mTLS pair: drop a lone one rather than migrating it.\n if (this.get('email', entryWhere)) {\n authProblems.push({\n action: 'rename',\n from: 'email',\n to: `${nerfedReg}:email`,\n where: entryWhere,\n })\n }\n for (const key of ['certfile', 'keyfile']) {\n if (this.get(key, entryWhere)) {\n const pair = key === 'certfile' ? 'keyfile' : 'certfile'\n if (!this.get(pair, entryWhere)) {\n authProblems.push({ action: 'delete', key, where: entryWhere })\n } else {\n authProblems.push({\n action: 'rename',\n from: key,\n to: `${nerfedReg}:${key}`,\n where: entryWhere,\n })\n }\n }\n }\n }\n }\n\n if (authProblems.length) {\n const { ErrInvalidAuth } = require('./errors.js')\n throw new ErrInvalidAuth(authProblems)\n }\n\n return valid\n } else {\n const obj = this.data.get(where)\n obj[_valid] = true\n\n nopt.invalidHandler = (k, val, type) =>\n this.invalidHandler(k, val, type, obj.source, where)\n\n nopt.clean(obj.data, this.types, typeDefs)\n\n nopt.invalidHandler = null\n return obj[_valid]\n }\n }\n\n // fixes problems identified by validate(), accepts the 'problems' property from a thrown\n // ErrInvalidAuth to avoid having to check everything again\n repair (problems) {\n if (!problems) {\n try {\n this.validate()\n } catch (err) {\n // coverage skipped here because we don't need to test re-throwing an error\n // istanbul ignore next\n if (err.code !== 'ERR_INVALID_AUTH') {\n throw err\n }\n\n problems = err.problems\n } finally {\n if (!problems) {\n problems = []\n }\n }\n }\n\n for (const problem of problems) {\n // coverage disabled for else branch because it doesn't do anything and shouldn't\n // istanbul ignore else\n if (problem.action === 'delete') {\n this.delete(problem.key, problem.where)\n } else if (problem.action === 'rename') {\n // If the destination already exists, drop the source rather than clobber.\n if (this.find(problem.to) !== null) {\n this.delete(problem.from, problem.where)\n } else {\n const raw = this.data.get(problem.where).raw?.[problem.from]\n const calculated = this.get(problem.from, problem.where)\n this.set(problem.to, raw || calculated, problem.where)\n this.delete(problem.from, problem.where)\n }\n }\n }\n }\n\n // Returns true if the value is coming directly from the source defined\n // in default definitions, if the current value for the key config is\n // coming from any other different source, returns false\n isDefault (key) {\n const [defaultType, ...types] = [...confTypes]\n const defaultData = this.data.get(defaultType).data\n\n return hasOwnProperty(defaultData, key)\n && types.every(type => {\n const typeData = this.data.get(type).data\n return !hasOwnProperty(typeData, key)\n })\n }\n\n invalidHandler (k, val, type, source, where) {\n const typeDescription = require('./type-description.js')\n log.warn(\n 'invalid config',\n k + '=' + JSON.stringify(val),\n `set in ${source}`\n )\n this.data.get(where)[_valid] = false\n\n if (Array.isArray(type)) {\n if (type.includes(typeDefs.url.type)) {\n type = typeDefs.url.type\n } else {\n /* istanbul ignore if - no actual configs matching this, but\n * path types SHOULD be handled this way, like URLs, for the\n * same reason */\n if (type.includes(typeDefs.path.type)) {\n type = typeDefs.path.type\n }\n }\n }\n\n const typeDesc = typeDescription(type)\n const mustBe = typeDesc\n .filter(m => m !== undefined && m !== Array)\n const msg = 'Must be' + this.#getOneOfKeywords(mustBe, typeDesc)\n const desc = mustBe.length === 1 ? mustBe[0]\n : [...new Set(mustBe.map(n => typeof n === 'string' ? n : JSON.stringify(n)))].join(', ')\n log.warn('invalid config', msg, desc)\n }\n\n abbrevHandler (short, long) {\n throw Object.assign(\n new Error(`Invalid abbreviated flag \"--${short}\". Did you mean \"--${long}\"?`),\n { code: 'EUNKNOWNCONFIG' }\n )\n }\n\n unknownHandler (key, next) {\n if (next) {\n this.queueWarning(`unknown:${next}`, `\"${next}\" is being parsed as a normal command line argument.`)\n }\n }\n\n #getOneOfKeywords (mustBe, typeDesc) {\n let keyword\n if (mustBe.length === 1 && typeDesc.includes(Array)) {\n keyword = ' one or more'\n } else if (mustBe.length > 1 && typeDesc.includes(Array)) {\n keyword = ' one or more of:'\n } else if (mustBe.length > 1) {\n keyword = ' one of:'\n } else {\n keyword = ''\n }\n return keyword\n }\n\n #loadObject (obj, where, source, er = null) {\n // obj is the raw data read from the file\n const conf = this.data.get(where)\n if (conf.source) {\n const m = `double-loading \"${where}\" configs from ${source}, ` +\n `previously loaded from ${conf.source}`\n throw new Error(m)\n }\n\n if (this.sources.has(source)) {\n const m = `double-loading config \"${source}\" as \"${where}\", ` +\n `previously loaded as \"${this.sources.get(source)}\"`\n throw new Error(m)\n }\n\n conf.source = source\n this.sources.set(source, where)\n if (er) {\n conf.loadError = er\n if (er.code !== 'ENOENT') {\n log.verbose('config', `error loading ${where} config`, er)\n }\n } else {\n conf.raw = obj\n outer: for (const [key, value] of Object.entries(obj)) {\n const k = envReplace(key, this.env)\n const v = this.parseField(value, k)\n if (where !== 'default') {\n this.#checkDeprecated(k)\n if (this.definitions[key]?.exclusive) {\n for (const exclusive of this.definitions[key].exclusive) {\n if (!this.isDefault(exclusive)) {\n // when loading from env, skip only if sibling was explicitly set via CLI\n if (where === 'env') {\n const cliData = this.data.get('cli').data\n if (Object.hasOwn(cliData, exclusive)) {\n continue outer\n }\n }\n throw new TypeError(`--${key} cannot be provided when using --${exclusive}`)\n }\n }\n }\n }\n if (where !== 'default' || key === 'npm-version') {\n this.checkUnknown(where, key, source)\n }\n conf.data[k] = v\n }\n }\n }\n\n checkUnknown (where, key, source = null) {\n if (this.definitions[key]) {\n return\n }\n if (internalEnv.includes(key)) {\n return\n }\n const scoped = key.includes(':')\n let baseKey = null\n if (scoped) {\n baseKey = key.split(':').pop()\n if (this.definitions[baseKey] || this.nerfDarts.includes(baseKey)) {\n return\n }\n }\n\n const entry = { where, key, baseKey, source: source ?? this.data.get(where)?.source ?? null }\n this.#unknownConfigs.push(entry)\n\n // publishConfig is handled by publish/unpublish/config commands and is out of scope for the npm 12 breaking change (tracked separately).\n // Keep it as a queued warning so existing behavior is preserved.\n if (where === 'publishConfig') {\n const hint = ' See `npm help npmrc` for supported config options.'\n const msg = scoped\n ? `Unknown ${where} config \"${baseKey}\" (${key}). This will stop working in the next major version of npm.${hint}`\n : `Unknown ${where} config \"${key}\". This will stop working in the next major version of npm.${hint}`\n this.queueWarning(scoped ? baseKey : key, msg)\n return\n }\n\n // env unknowns are an explicit carve-out for npm 12.\n // setEnvs() exports npm_config_* for child processes and loadEnv() re-ingests them; erroring here would break npm-invoked-npm and many CI setups.\n // Keep as warning. Planned to error in npm 13.\n if (where === 'env') {\n const hint = ' See `npm help npmrc` for supported config options.'\n const msg = scoped\n ? `Unknown ${where} config \"${baseKey}\" (${key}). This will error in a future major version of npm.${hint}`\n : `Unknown ${where} config \"${key}\". This will error in a future major version of npm.${hint}`\n this.queueWarning(scoped ? baseKey : key, msg)\n }\n\n // cli + file sources (builtin/project/user/global): collected only.\n // Aggregated and thrown by `BaseCommand.validateCli` after subcommand flag resolution so command-specific flags can be allow-listed first.\n }\n\n // Returns unknown-config entries for a given source ('cli', 'builtin', 'project', 'user', 'global') or all entries except `env` and `publishConfig` when omitted.\n getUnknownConfigs (where) {\n if (where) {\n return this.#unknownConfigs.filter(u => u.where === where)\n }\n return this.#unknownConfigs.filter(u => u.where !== 'env' && u.where !== 'publishConfig')\n }\n\n #checkDeprecated (key) {\n if (this.deprecated[key]) {\n log.warn('config', key, this.deprecated[key])\n }\n }\n\n // Parse a field, coercing it to the best type available.\n parseField (f, key, listElement = false) {\n return parseField(f, key, this, listElement)\n }\n\n async #loadFile (file, type) {\n // only catch the error from readFile, not from the loadObject call\n log.silly('config', `load:file:${file}`)\n await readFile(file, 'utf8').then(\n data => {\n const parsedConfig = ini.parse(data)\n if (type === 'project' && parsedConfig.prefix) {\n // Log error if prefix is mentioned in project .npmrc\n /* eslint-disable-next-line max-len */\n log.error('config', `prefix cannot be changed from project config: ${file}.`)\n }\n return this.#loadObject(parsedConfig, type, file)\n },\n er => this.#loadObject(null, type, file, er)\n )\n }\n\n loadBuiltinConfig () {\n return this.#loadFile(resolve(this.npmPath, 'npmrc'), 'builtin')\n }\n\n async loadProjectConfig () {\n // the localPrefix can be set by the CLI config, but otherwise is\n // found by walking up the folder tree. either way, we load it before\n // we return to make sure localPrefix is set\n await this.loadLocalPrefix()\n\n // if we have not detected a local package json yet, try now that we\n // have a local prefix\n if (this.localPackage == null) {\n this.localPackage = await fileExists(this.localPrefix, 'package.json')\n }\n\n if (this.#get('global') === true || this.#get('location') === 'global') {\n this.data.get('project').source = '(global mode enabled, ignored)'\n this.sources.set(this.data.get('project').source, 'project')\n return\n }\n\n const projectFile = resolve(this.localPrefix, '.npmrc')\n // if we're in the ~ directory, and there happens to be a node_modules\n // folder (which is not TOO uncommon, it turns out), then we can end\n // up loading the \"project\" config where the \"userconfig\" will be,\n // which causes some calamities. So, we only load project config if\n // it doesn't match what the userconfig will be.\n if (projectFile !== this.#get('userconfig')) {\n return this.#loadFile(projectFile, 'project')\n } else {\n this.data.get('project').source = '(same as \"user\" config, ignored)'\n this.sources.set(this.data.get('project').source, 'project')\n }\n }\n\n async loadLocalPrefix () {\n const cliPrefix = this.#get('prefix', 'cli')\n if (cliPrefix) {\n this.localPrefix = cliPrefix\n return\n }\n\n const cliWorkspaces = this.#get('workspaces', 'cli')\n const isGlobal = this.#get('global') || this.#get('location') === 'global'\n\n for (const p of walkUp(this.cwd)) {\n // HACK: this is an option set in tests to stop the local prefix from being set\n // on tests that are created inside the npm repo\n if (this.excludeNpmCwd && p === this.npmPath) {\n break\n }\n\n const hasPackageJson = await fileExists(p, 'package.json')\n\n if (!this.localPrefix && (hasPackageJson || await dirExists(p, 'node_modules'))) {\n this.localPrefix = p\n this.localPackage = hasPackageJson\n\n // if workspaces are disabled, or we're in global mode, return now\n if (cliWorkspaces === false || isGlobal) {\n return\n }\n\n // otherwise, continue the loop\n continue\n }\n\n if (this.localPrefix && hasPackageJson) {\n const pkgJson = require('@npmcli/package-json')\n // if we already set localPrefix but this dir has a package.json\n // then we need to see if `p` is a workspace root by reading its package.json\n // however, if reading it fails then we should just move on\n const { content: pkg } = await pkgJson.normalize(p).catch(() => ({ content: {} }))\n if (!pkg?.workspaces) {\n continue\n }\n\n const mapWorkspaces = require('@npmcli/map-workspaces')\n const workspaces = await mapWorkspaces({ cwd: p, pkg })\n for (const w of workspaces.values()) {\n if (w === this.localPrefix) {\n // see if there's a .npmrc file in the workspace, if so log a warning\n if (await fileExists(this.localPrefix, '.npmrc')) {\n log.warn('config', `ignoring workspace config at ${this.localPrefix}/.npmrc`)\n }\n\n // set the workspace in the default layer, which allows it to be overridden easily\n const { data } = this.data.get('default')\n data.workspace = [this.localPrefix]\n this.localPrefix = p\n this.localPackage = hasPackageJson\n log.info('config', `found workspace root at ${this.localPrefix}`)\n // we found a root, so we return now\n return\n }\n }\n }\n }\n\n if (!this.localPrefix) {\n this.localPrefix = this.cwd\n }\n }\n\n loadUserConfig () {\n return this.#loadFile(this.#get('userconfig'), 'user')\n }\n\n loadGlobalConfig () {\n return this.#loadFile(this.#get('globalconfig'), 'global')\n }\n\n async save (where) {\n if (!this.loaded) {\n throw new Error('call config.load() before saving')\n }\n if (!confFileTypes.has(where)) {\n throw new Error('invalid config location param: ' + where)\n }\n\n const conf = this.data.get(where)\n conf[_loadError] = null\n\n if (where === 'user') {\n // Historically, save('user') would \"de-nerf\" email — move a scoped `<nerfdart>:email` into a top-level `email` key — because npm used to warn on nerfed email.\n // In npm 12 the top-level `email` key is a hard error, so we keep email in its scoped form.\n }\n\n // We need the actual raw data before we called parseField so that we are\n // saving the same content back to the file\n const iniData = ini.stringify(conf.raw).trim() + '\\n'\n if (!iniData.trim()) {\n // ignore the unlink error (eg, if file doesn't exist)\n await unlink(conf.source).catch(() => {})\n return\n }\n const dir = dirname(conf.source)\n await mkdir(dir, { recursive: true })\n await writeFile(conf.source, iniData, 'utf8')\n const mode = where === 'user' ? 0o600 : 0o666\n await chmod(conf.source, mode)\n }\n\n clearCredentialsByURI (uri, level = 'user') {\n const nerfed = nerfDart(uri)\n const def = nerfDart(this.get('registry'))\n if (def === nerfed) {\n this.delete(`-authtoken`, level)\n this.delete(`_authToken`, level)\n this.delete(`_authtoken`, level)\n this.delete(`_auth`, level)\n this.delete(`_password`, level)\n this.delete(`username`, level)\n // In npm 12, top-level `email` is a hard error — don't de-nerf it here either.\n }\n this.delete(`${nerfed}:_authToken`, level)\n this.delete(`${nerfed}:_auth`, level)\n this.delete(`${nerfed}:_password`, level)\n this.delete(`${nerfed}:username`, level)\n this.delete(`${nerfed}:email`, level)\n this.delete(`${nerfed}:certfile`, level)\n this.delete(`${nerfed}:keyfile`, level)\n }\n\n setCredentialsByURI (uri, { token, username, password, certfile, keyfile }) {\n const nerfed = nerfDart(uri)\n\n // field that hasn't been used as documented for a LONG time,\n // and as of npm 7.10.0, isn't used at all. We just always\n // send auth if we have it, only to the URIs under the nerf dart.\n this.delete(`${nerfed}:always-auth`, 'user')\n\n // NOTE: we intentionally do NOT delete `${nerfed}:email` here anymore.\n // In npm 11 and earlier, top-level `email` was the canonical form (with getCredentialsByURI copying scoped email up to top-level on read), and setCredentialsByURI cleared the scoped copy to enforce that invariant.\n // In npm 12 top-level `email` is a hard error and the scoped nerfdart form is canonical, so preserve any existing scoped email across login.\n if (certfile && keyfile) {\n this.set(`${nerfed}:certfile`, certfile, 'user')\n this.set(`${nerfed}:keyfile`, keyfile, 'user')\n // cert/key may be used in conjunction with other credentials, thus no `else`\n }\n if (token) {\n this.set(`${nerfed}:_authToken`, token, 'user')\n this.delete(`${nerfed}:_password`, 'user')\n this.delete(`${nerfed}:username`, 'user')\n } else if (username || password) {\n if (!username) {\n throw new Error('must include username')\n }\n if (!password) {\n throw new Error('must include password')\n }\n this.delete(`${nerfed}:_authToken`, 'user')\n this.set(`${nerfed}:username`, username, 'user')\n // note: not encrypted, no idea why we bothered to do this, but oh well\n // protects against shoulder-hacks if password is memorable, I guess?\n const encoded = Buffer.from(password, 'utf8').toString('base64')\n this.set(`${nerfed}:_password`, encoded, 'user')\n } else if (!certfile || !keyfile) {\n throw new Error('No credentials to set.')\n }\n }\n\n // this has to be a bit more complicated to support legacy data of all forms\n getCredentialsByURI (uri) {\n const nerfed = nerfDart(uri)\n const creds = {}\n\n // email is handled differently, it used to always be nerfed and now it never should be.\n // In npm 12 the top-level `email` key is a hard error, so we stop copying scoped email back to the top-level here.\n // TODO: evaluate removing 'email' from the credentials object returned here\n const email = this.get(`${nerfed}:email`) || this.get('email')\n if (email) {\n creds.email = email\n }\n\n const certfileReg = this.get(`${nerfed}:certfile`)\n const keyfileReg = this.get(`${nerfed}:keyfile`)\n if (certfileReg && keyfileReg) {\n creds.certfile = certfileReg\n creds.keyfile = keyfileReg\n // cert/key may be used in conjunction with other credentials, thus no `return`\n }\n\n const tokenReg = this.get(`${nerfed}:_authToken`)\n if (tokenReg) {\n creds.token = tokenReg\n return creds\n }\n\n const userReg = this.get(`${nerfed}:username`)\n const passReg = this.get(`${nerfed}:_password`)\n if (userReg && passReg) {\n creds.username = userReg\n creds.password = Buffer.from(passReg, 'base64').toString('utf8')\n const auth = `${creds.username}:${creds.password}`\n creds.auth = Buffer.from(auth, 'utf8').toString('base64')\n return creds\n }\n\n const authReg = this.get(`${nerfed}:_auth`)\n if (authReg) {\n const authDecode = Buffer.from(authReg, 'base64').toString('utf8')\n const authSplit = authDecode.split(':')\n creds.username = authSplit.shift()\n creds.password = authSplit.join(':')\n creds.auth = authReg\n return creds\n }\n\n // at this point, nothing else is usable so just return what we do have\n return creds\n }\n\n // set up the environment object we have with npm_config_* environs\n // for all configs that are different from their default values, and\n // set EDITOR and HOME.\n setEnvs () {\n setEnvs(this)\n }\n\n removeWarning (key) {\n this.#warnings = this.#warnings.filter(w => w.type !== key)\n }\n\n getUnknownPositionals () {\n return this.#warnings\n .filter(w => w.type.startsWith('unknown:'))\n .map(w => w.type.slice('unknown:'.length))\n }\n\n removeUnknownPositional (value) {\n this.removeWarning(`unknown:${value}`)\n }\n\n queueWarning (type, ...args) {\n if (!this.warn) {\n this.#warnings.push({ type, args })\n } else {\n log.warn(...args)\n }\n }\n\n logWarnings () {\n for (const warning of this.#warnings) {\n log.warn(...warning.args)\n }\n this.#warnings = []\n }\n}\n\nconst _loadError = Symbol('loadError')\nconst _valid = Symbol('valid')\n\nclass ConfigData {\n #data\n #source = null\n #raw = null\n constructor (parent) {\n this.#data = Object.create(parent && parent.data)\n this.#raw = {}\n this[_valid] = true\n }\n\n get data () {\n return this.#data\n }\n\n get valid () {\n return this[_valid]\n }\n\n set source (s) {\n if (this.#source) {\n throw new Error('cannot set ConfigData source more than once')\n }\n this.#source = s\n }\n\n get source () {\n return this.#source\n }\n\n set loadError (e) {\n if (this[_loadError] || (Object.keys(this.#raw).length)) {\n throw new Error('cannot set ConfigData loadError after load')\n }\n this[_loadError] = e\n }\n\n get loadError () {\n return this[_loadError]\n }\n\n set raw (r) {\n if (Object.keys(this.#raw).length || this[_loadError]) {\n throw new Error('cannot set ConfigData raw after load')\n }\n this.#raw = r\n }\n\n get raw () {\n return this.#raw\n }\n}\n\nconst getTypesFromDefinitions = (definitions) => {\n const types = {}\n const defaults = {}\n const deprecated = {}\n\n for (const [key, def] of Object.entries(definitions)) {\n defaults[key] = def.default\n types[key] = def.type\n if (def.deprecated) {\n deprecated[key] = def.deprecated.trim().replace(/\\n +/, '\\n')\n }\n }\n\n return { types, defaults, deprecated }\n}\n\nmodule.exports = Config\nmodule.exports.getTypesFromDefinitions = getTypesFromDefinitions\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}
|