Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2021-03-16 03:01:10 +0300
committerisaacs <i@izs.me>2021-03-18 21:59:26 +0300
commitaaafab83d0d0ef6f1ff213b19eb466d3e2c4765f (patch)
treebfa0d8b972af980682cd5db0271416e9f73d1b5e
parent7c89e74469520f80a0922987c761ebd808d8608c (diff)
Remove old config definitions and flattening logicisaacs/config-refactor
PR-URL: https://github.com/npm/cli/pull/2878 Credit: @isaacs Close: #2878 Reviewed-by: @isaacs
-rw-r--r--lib/utils/config.js394
-rw-r--r--lib/utils/flat-options.js254
-rw-r--r--tap-snapshots/test-lib-utils-config.js-TAP.test.js1110
-rw-r--r--tap-snapshots/test-lib-utils-flat-options.js-TAP.test.js129
-rw-r--r--test/lib/utils/config.js143
-rw-r--r--test/lib/utils/flat-options.js359
6 files changed, 0 insertions, 2389 deletions
diff --git a/lib/utils/config.js b/lib/utils/config.js
deleted file mode 100644
index 3ca976613..000000000
--- a/lib/utils/config.js
+++ /dev/null
@@ -1,394 +0,0 @@
-// defaults, types, and shorthands
-
-const {
- typeDefs: {
- semver: { type: semver },
- Umask: { type: Umask },
- url: { type: url },
- path: { type: path },
- },
-} = require('@npmcli/config')
-
-const { version: npmVersion } = require('../../package.json')
-
-const ciDetect = require('@npmcli/ci-detect')
-const ciName = ciDetect()
-
-const isWindows = require('./is-windows.js')
-
-const editor = process.env.EDITOR ||
- process.env.VISUAL ||
- (isWindows ? 'notepad.exe' : 'vi')
-
-const shell = isWindows ? process.env.ComSpec || 'cmd'
- : process.env.SHELL || 'sh'
-
-const { tmpdir, networkInterfaces } = require('os')
-const getLocalAddresses = () => {
- try {
- return Object.values(networkInterfaces()).map(
- int => int.map(({ address }) => address)
- ).reduce((set, addrs) => set.concat(addrs), [undefined])
- } catch (e) {
- return [undefined]
- }
-}
-
-const unicode = /UTF-?8$/i.test(
- process.env.LC_ALL || process.env.LC_CTYPE || process.env.LANG
-)
-
-// use LOCALAPPDATA on Windows, if set
-// https://github.com/npm/cli/pull/899
-const cacheRoot = (isWindows && process.env.LOCALAPPDATA) || '~'
-const cacheExtra = isWindows ? 'npm-cache' : '.npm'
-const cache = `${cacheRoot}/${cacheExtra}`
-
-const defaults = {
- access: null,
- all: false,
- 'allow-same-version': false,
- also: null,
- 'always-auth': false,
- audit: true,
- 'audit-level': null,
- _auth: null,
- 'auth-type': 'legacy',
- before: null,
- 'bin-links': true,
- browser: null,
- ca: null,
- cache,
- 'cache-lock-retries': 10,
- 'cache-lock-stale': 60000,
- 'cache-lock-wait': 10000,
- 'cache-max': Infinity,
- 'cache-min': 10,
- cafile: null,
- call: '',
- cert: null,
- 'ci-name': ciName || null,
- cidr: null,
- color: process.env.NO_COLOR == null,
- 'commit-hooks': true,
- depth: null,
- description: true,
- dev: false,
- diff: [],
- 'diff-unified': null,
- 'diff-ignore-all-space': false,
- 'diff-name-only': false,
- 'diff-no-prefix': false,
- 'diff-src-prefix': '',
- 'diff-dst-prefix': '',
- 'diff-text': false,
- 'dry-run': false,
- editor,
- 'engine-strict': false,
- 'fetch-retries': 2,
- 'fetch-retry-factor': 10,
- 'fetch-retry-maxtimeout': 60000,
- 'fetch-retry-mintimeout': 10000,
- 'fetch-timeout': 5 * 60 * 1000,
- force: false,
- 'foreground-script': false,
- 'format-package-lock': true,
- fund: true,
- git: 'git',
- 'git-tag-version': true,
- global: false,
- 'global-style': false,
- // `globalconfig` has its default defined outside of this module
- heading: 'npm',
- 'https-proxy': null,
- 'if-present': false,
- 'ignore-prepublish': false,
- 'ignore-scripts': false,
- include: [],
- 'include-staged': false,
- 'init-author-email': '',
- 'init-author-name': '',
- 'init-author-url': '',
- 'init-license': 'ISC',
- 'init-module': '~/.npm-init.js',
- 'init-version': '1.0.0',
- 'init.author.email': '',
- 'init.author.name': '',
- 'init.author.url': '',
- 'init.license': 'ISC',
- 'init.module': '~/.npm-init.js',
- 'init.version': '1.0.0',
- json: false,
- key: null,
- 'legacy-bundling': false,
- 'legacy-peer-deps': false,
- link: false,
- 'local-address': undefined,
- loglevel: 'notice',
- 'logs-max': 10,
- long: false,
- maxsockets: 50,
- message: '%s',
- 'node-options': null,
- 'node-version': process.version,
- noproxy: null,
- 'npm-version': npmVersion,
- offline: false,
- omit: [],
- only: null,
- optional: true,
- otp: null,
- package: [],
- 'package-lock': true,
- 'package-lock-only': false,
- parseable: false,
- 'prefer-offline': false,
- 'prefer-online': false,
- // `prefix` has its default defined outside of this module
- preid: '',
- production: process.env.NODE_ENV === 'production',
- progress: !ciName,
- proxy: null,
- 'read-only': false,
- 'rebuild-bundle': true,
- registry: 'https://registry.npmjs.org/',
- rollback: true,
- save: true,
- 'save-bundle': false,
- 'save-dev': false,
- 'save-exact': false,
- 'save-optional': false,
- 'save-prefix': '^',
- 'save-prod': false,
- scope: '',
- 'script-shell': null,
- 'scripts-prepend-node-path': 'warn-only',
- searchexclude: null,
- searchlimit: 20,
- searchopts: '',
- searchstaleness: 15 * 60,
- shell,
- shrinkwrap: true,
- 'sign-git-commit': false,
- 'sign-git-tag': false,
- 'sso-poll-frequency': 500,
- 'sso-type': 'oauth',
- 'strict-peer-deps': false,
- 'strict-ssl': true,
- tag: 'latest',
- 'tag-version-prefix': 'v',
- timing: false,
- tmp: tmpdir(),
- umask: 0,
- unicode,
- 'update-notifier': true,
- usage: false,
- 'user-agent': 'npm/{npm-version} ' +
- 'node/{node-version} ' +
- '{platform} ' +
- '{arch} ' +
- '{ci}',
- userconfig: '~/.npmrc',
- version: false,
- versions: false,
- viewer: isWindows ? 'browser' : 'man',
-}
-
-const types = {
- access: [null, 'restricted', 'public'],
- all: Boolean,
- 'allow-same-version': Boolean,
- also: [null, 'dev', 'development'],
- _auth: [null, String],
- 'always-auth': Boolean,
- audit: Boolean,
- 'audit-level': ['low', 'moderate', 'high', 'critical', 'none', null],
- 'auth-type': ['legacy', 'sso', 'saml', 'oauth'],
- before: [null, Date],
- 'bin-links': Boolean,
- browser: [null, Boolean, String],
- ca: [null, String, Array],
- cache: path,
- 'cache-lock-retries': Number,
- 'cache-lock-stale': Number,
- 'cache-lock-wait': Number,
- 'cache-max': Number,
- 'cache-min': Number,
- cafile: path,
- call: String,
- cert: [null, String],
- 'ci-name': [null, String],
- cidr: [null, String, Array],
- color: ['always', Boolean],
- 'commit-hooks': Boolean,
- depth: [null, Number],
- description: Boolean,
- dev: Boolean,
- diff: [String, Array],
- 'diff-unified': [null, Number],
- 'diff-ignore-all-space': Boolean,
- 'diff-name-only': Boolean,
- 'diff-no-prefix': Boolean,
- 'diff-src-prefix': String,
- 'diff-dst-prefix': String,
- 'diff-text': Boolean,
- 'dry-run': Boolean,
- editor: String,
- 'engine-strict': Boolean,
- 'fetch-retries': Number,
- 'fetch-retry-factor': Number,
- 'fetch-retry-maxtimeout': Number,
- 'fetch-retry-mintimeout': Number,
- 'fetch-timeout': Number,
- force: Boolean,
- 'foreground-script': Boolean,
- 'format-package-lock': Boolean,
- fund: Boolean,
- git: String,
- 'git-tag-version': Boolean,
- global: Boolean,
- 'global-style': Boolean,
- globalconfig: path,
- heading: String,
- 'https-proxy': [null, url],
- 'if-present': Boolean,
- 'ignore-prepublish': Boolean,
- 'ignore-scripts': Boolean,
- include: [Array, 'prod', 'dev', 'optional', 'peer'],
- 'include-staged': Boolean,
- 'init-author-email': String,
- 'init-author-name': String,
- 'init-author-url': ['', url],
- 'init-license': String,
- 'init-module': path,
- 'init-version': semver,
- 'init.author.email': String,
- 'init.author.name': String,
- 'init.author.url': ['', url],
- 'init.license': String,
- 'init.module': path,
- 'init.version': semver,
- json: Boolean,
- key: [null, String],
- 'legacy-bundling': Boolean,
- 'legacy-peer-deps': Boolean,
- link: Boolean,
- 'local-address': getLocalAddresses(),
- loglevel: [
- 'silent',
- 'error',
- 'warn',
- 'notice',
- 'http',
- 'timing',
- 'info',
- 'verbose',
- 'silly',
- ],
- 'logs-max': Number,
- long: Boolean,
- maxsockets: Number,
- message: String,
- 'node-options': [null, String],
- 'node-version': [null, semver],
- noproxy: [null, String, Array],
- 'npm-version': semver,
- offline: Boolean,
- omit: [Array, 'dev', 'optional', 'peer'],
- only: [null, 'dev', 'development', 'prod', 'production'],
- optional: Boolean,
- otp: [null, String],
- package: [String, Array],
- 'package-lock': Boolean,
- 'package-lock-only': Boolean,
- parseable: Boolean,
- 'prefer-offline': Boolean,
- 'prefer-online': Boolean,
- prefix: path,
- preid: String,
- production: Boolean,
- progress: Boolean,
- proxy: [null, false, url], // allow proxy to be disabled explicitly
- 'read-only': Boolean,
- 'rebuild-bundle': Boolean,
- registry: [null, url],
- rollback: Boolean,
- save: Boolean,
- 'save-bundle': Boolean,
- 'save-dev': Boolean,
- 'save-exact': Boolean,
- 'save-optional': Boolean,
- 'save-prefix': String,
- 'save-prod': Boolean,
- scope: String,
- 'script-shell': [null, String],
- 'scripts-prepend-node-path': [Boolean, 'auto', 'warn-only'],
- searchexclude: [null, String],
- searchlimit: Number,
- searchopts: String,
- searchstaleness: Number,
- shell: String,
- shrinkwrap: Boolean,
- 'sign-git-commit': Boolean,
- 'sign-git-tag': Boolean,
- 'sso-poll-frequency': Number,
- 'sso-type': [null, 'oauth', 'saml'],
- 'strict-peer-deps': Boolean,
- 'strict-ssl': Boolean,
- tag: String,
- 'tag-version-prefix': String,
- timing: Boolean,
- tmp: path,
- umask: Umask,
- unicode: Boolean,
- 'update-notifier': Boolean,
- usage: Boolean,
- 'user-agent': String,
- userconfig: path,
- version: Boolean,
- versions: Boolean,
- viewer: String,
-}
-
-const shorthands = {
- '?': ['--usage'],
- a: ['--all'],
- B: ['--save-bundle'],
- C: ['--prefix'],
- c: ['--call'],
- D: ['--save-dev'],
- d: ['--loglevel', 'info'],
- dd: ['--loglevel', 'verbose'],
- ddd: ['--loglevel', 'silly'],
- desc: ['--description'],
- E: ['--save-exact'],
- 'enjoy-by': ['--before'],
- f: ['--force'],
- g: ['--global'],
- H: ['--usage'],
- h: ['--usage'],
- help: ['--usage'],
- l: ['--long'],
- local: ['--no-global'],
- m: ['--message'],
- n: ['--no-yes'],
- 'no-desc': ['--no-description'],
- 'no-reg': ['--no-registry'],
- noreg: ['--no-registry'],
- O: ['--save-optional'],
- P: ['--save-prod'],
- p: ['--parseable'],
- porcelain: ['--parseable'],
- q: ['--loglevel', 'warn'],
- quiet: ['--loglevel', 'warn'],
- readonly: ['--read-only'],
- reg: ['--registry'],
- S: ['--save'],
- s: ['--loglevel', 'silent'],
- silent: ['--loglevel', 'silent'],
- v: ['--version'],
- verbose: ['--loglevel', 'verbose'],
- y: ['--yes'],
-}
-
-module.exports = { defaults, types, shorthands }
diff --git a/lib/utils/flat-options.js b/lib/utils/flat-options.js
deleted file mode 100644
index c082e4137..000000000
--- a/lib/utils/flat-options.js
+++ /dev/null
@@ -1,254 +0,0 @@
-// return a flattened config object with canonical names suitable for
-// passing to dependencies like arborist, pacote, npm-registry-fetch, etc.
-
-const log = require('npmlog')
-const crypto = require('crypto')
-const querystring = require('querystring')
-const npmSession = crypto.randomBytes(8).toString('hex')
-log.verbose('npm-session', npmSession)
-const { join } = require('path')
-
-const buildOmitList = obj => {
- const include = obj.include || []
- const omit = new Set((obj.omit || [])
- .filter(type => !include.includes(type)))
- const only = obj.only
-
- if (/^prod(uction)?$/.test(only) || obj.production)
- omit.add('dev')
-
- if (/dev/.test(obj.also))
- omit.delete('dev')
-
- if (obj.dev)
- omit.delete('dev')
-
- if (obj.optional === false)
- omit.add('optional')
-
- obj.omit = [...omit]
-
- // it would perhaps make more sense to put this in @npmcli/config, but
- // since we can set dev to be omitted in multiple various legacy ways,
- // it's better to set it here once it's all resolved.
- if (obj.omit.includes('dev'))
- process.env.NODE_ENV = 'production'
-
- return [...omit]
-}
-
-// turn an object with npm-config style keys into an options object
-// with camelCase values. This doesn't account for the stuff that is
-// not pulled from the config keys, that's all handled only for the
-// main function which acts on the npm object itself. Used by the
-// flatOptions generator, and by the publishConfig handling logic.
-const flatten = obj => ({
- includeStaged: obj['include-staged'],
- preferDedupe: obj['prefer-dedupe'],
- ignoreScripts: obj['ignore-scripts'],
- nodeVersion: obj['node-version'],
- cache: join(obj.cache, '_cacache'),
- global: obj.global,
-
- registry: obj.registry,
- scope: obj.scope,
- access: obj.access,
- alwaysAuth: obj['always-auth'],
- audit: obj.audit,
- auditLevel: obj['audit-level'],
- _auth: obj._auth,
- authType: obj['auth-type'],
- ssoType: obj['sso-type'],
- ssoPollFrequency: obj['sso-poll-frequency'],
- before: obj.before,
- browser: obj.browser,
- ca: obj.ca,
- cafile: obj.cafile,
- cert: obj.cert,
- key: obj.key,
-
- // token creation options
- cidr: obj.cidr,
- readOnly: obj['read-only'],
-
- // npm version options
- preid: obj.preid,
- tagVersionPrefix: obj['tag-version-prefix'],
- allowSameVersion: obj['allow-same-version'],
-
- // npm version git options
- message: obj.message,
- commitHooks: obj['commit-hooks'],
- gitTagVersion: obj['git-tag-version'],
- signGitCommit: obj['sign-git-commit'],
- signGitTag: obj['sign-git-tag'],
-
- // only used for npm ls in v7, not update
- depth: obj.depth,
- all: obj.all,
-
- // Output configs
- unicode: obj.unicode,
- json: obj.json,
- long: obj.long,
- parseable: obj.parseable,
-
- // options for npm search
- search: {
- description: obj.description,
- exclude: obj.searchexclude,
- limit: obj.searchlimit || 20,
- opts: querystring.parse(obj.searchopts),
- staleness: obj.searchstaleness,
- },
-
- diff: obj.diff,
- diffUnified: obj['diff-unified'],
- diffIgnoreAllSpace: obj['diff-ignore-all-space'],
- diffNameOnly: obj['diff-name-only'],
- diffNoPrefix: obj['diff-no-prefix'],
- diffSrcPrefix: obj['diff-src-prefix'],
- diffDstPrefix: obj['diff-dst-prefix'],
- diffText: obj['diff-text'],
-
- dryRun: obj['dry-run'],
- engineStrict: obj['engine-strict'],
-
- retry: {
- retries: obj['fetch-retries'],
- factor: obj['fetch-retry-factor'],
- maxTimeout: obj['fetch-retry-maxtimeout'],
- minTimeout: obj['fetch-retry-mintimeout'],
- },
-
- timeout: obj['fetch-timeout'],
-
- force: obj.force,
-
- formatPackageLock: obj['format-package-lock'],
- fund: obj.fund,
-
- // binary locators
- git: obj.git,
- viewer: obj.viewer,
- editor: obj.editor,
-
- // configs that affect how we build trees
- binLinks: obj['bin-links'],
- rebuildBundle: obj['rebuild-bundle'],
- // --no-shrinkwrap is the same as --no-package-lock
- packageLock: !(obj['package-lock'] === false ||
- obj.shrinkwrap === false),
- packageLockOnly: obj['package-lock-only'],
- globalStyle: obj['global-style'],
- legacyBundling: obj['legacy-bundling'],
- foregroundScripts: !!obj['foreground-scripts'],
- scriptShell: obj['script-shell'] || undefined,
- shell: obj.shell,
- omit: buildOmitList(obj),
- legacyPeerDeps: obj['legacy-peer-deps'],
- strictPeerDeps: obj['strict-peer-deps'],
-
- // npx stuff
- call: obj.call,
- package: obj.package,
-
- // used to build up the appropriate {add:{...}} options to Arborist.reify
- save: obj.save,
- saveBundle: obj['save-bundle'] && !obj['save-peer'],
- saveType: obj['save-optional'] && obj['save-peer']
- ? 'peerOptional'
- : obj['save-optional'] ? 'optional'
- : obj['save-dev'] ? 'dev'
- : obj['save-peer'] ? 'peer'
- : obj['save-prod'] ? 'prod'
- : null,
- savePrefix: obj['save-exact'] ? ''
- : obj['save-prefix'],
-
- // configs for npm-registry-fetch
- otp: obj.otp,
- offline: obj.offline,
- preferOffline: getPreferOffline(obj),
- preferOnline: getPreferOnline(obj),
- strictSSL: obj['strict-ssl'],
- defaultTag: obj.tag,
- userAgent: obj['user-agent'],
-
- // yes, it's fine, just do it, jeez, stop asking
- yes: obj.yes,
-
- ...getScopesAndAuths(obj),
-
- // npm fund exclusive option to select an item from a funding list
- which: obj.which,
-
- // socks proxy can be configured in https-proxy or proxy field
- // note that the various (HTTPS_|HTTP_|]PROXY environs will be
- // respected if this is not set.
- proxy: obj['https-proxy'] || obj.proxy,
- noProxy: obj.noproxy,
-})
-
-const flatOptions = npm => npm.flatOptions || Object.freeze({
- // flatten the config object
- ...flatten(npm.config.list[0]),
-
- // Note that many of these do not come from configs or cli flags
- // per se, though they may be implied or defined by them.
- log,
- npmSession,
- dmode: npm.modes.exec,
- fmode: npm.modes.file,
- umask: npm.modes.umask,
- hashAlgorithm: 'sha1', // XXX should this be sha512?
- color: !!npm.color,
- projectScope: npm.projectScope,
- npmVersion: npm.version,
-
- // npm.command is not set until AFTER flatOptions are defined
- // so we need to make this a getter.
- get npmCommand () {
- return npm.command
- },
-
- tmp: npm.tmp,
- prefix: npm.prefix,
- globalPrefix: npm.globalPrefix,
- localPrefix: npm.localPrefix,
- npmBin: require.main && require.main.filename,
- nodeBin: process.env.NODE || process.execPath,
- get tag () {
- return npm.config.get('tag')
- },
-})
-
-const getPreferOnline = obj => {
- const po = obj['prefer-online']
- if (po !== undefined)
- return po
-
- return obj['cache-max'] <= 0
-}
-
-const getPreferOffline = obj => {
- const po = obj['prefer-offline']
- if (po !== undefined)
- return po
-
- return obj['cache-min'] >= 9999
-}
-
-// pull out all the @scope:<key> and //host:key config fields
-// these are used by npm-registry-fetch for authing against registries
-const getScopesAndAuths = obj => {
- const scopesAndAuths = {}
- // pull out all the @scope:... configs into a flat object.
- for (const key in obj) {
- if (/@.*:registry$/i.test(key) || /^\/\//.test(key))
- scopesAndAuths[key] = obj[key]
- }
- return scopesAndAuths
-}
-
-module.exports = Object.assign(flatOptions, { flatten })
diff --git a/tap-snapshots/test-lib-utils-config.js-TAP.test.js b/tap-snapshots/test-lib-utils-config.js-TAP.test.js
deleted file mode 100644
index 39927e600..000000000
--- a/tap-snapshots/test-lib-utils-config.js-TAP.test.js
+++ /dev/null
@@ -1,1110 +0,0 @@
-/* IMPORTANT
- * This snapshot file is auto-generated, but designed for humans.
- * It should be checked into source control and tracked carefully.
- * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
- * Make sure to inspect the output below. Do not ignore changes!
- */
-'use strict'
-exports[`test/lib/utils/config.js TAP no working network interfaces, on windows > must match snapshot 1`] = `
-Object {
- "defaults": Object {
- "_auth": null,
- "access": null,
- "all": false,
- "allow-same-version": false,
- "also": null,
- "always-auth": false,
- "audit": true,
- "audit-level": null,
- "auth-type": "legacy",
- "before": null,
- "bin-links": true,
- "browser": null,
- "ca": null,
- "cache": "{CACHE DIR} npm-cache",
- "cache-lock-retries": 10,
- "cache-lock-stale": 60000,
- "cache-lock-wait": 10000,
- "cache-max": null,
- "cache-min": 10,
- "cafile": null,
- "call": "",
- "cert": null,
- "ci-name": null,
- "cidr": null,
- "color": true,
- "commit-hooks": true,
- "depth": null,
- "description": true,
- "dev": false,
- "diff": Array [],
- "diff-dst-prefix": "",
- "diff-ignore-all-space": false,
- "diff-name-only": false,
- "diff-no-prefix": false,
- "diff-src-prefix": "",
- "diff-text": false,
- "diff-unified": null,
- "dry-run": false,
- "editor": "vim",
- "engine-strict": false,
- "fetch-retries": 2,
- "fetch-retry-factor": 10,
- "fetch-retry-maxtimeout": 60000,
- "fetch-retry-mintimeout": 10000,
- "fetch-timeout": 300000,
- "force": false,
- "foreground-script": false,
- "format-package-lock": true,
- "fund": true,
- "git": "git",
- "git-tag-version": true,
- "global": false,
- "global-style": false,
- "heading": "npm",
- "https-proxy": null,
- "if-present": false,
- "ignore-prepublish": false,
- "ignore-scripts": false,
- "include": Array [],
- "include-staged": false,
- "init-author-email": "",
- "init-author-name": "",
- "init-author-url": "",
- "init-license": "ISC",
- "init-module": "~/.npm-init.js",
- "init-version": "1.0.0",
- "init.author.email": "",
- "init.author.name": "",
- "init.author.url": "",
- "init.license": "ISC",
- "init.module": "~/.npm-init.js",
- "init.version": "1.0.0",
- "json": false,
- "key": null,
- "legacy-bundling": false,
- "legacy-peer-deps": false,
- "link": false,
- "local-address": undefined,
- "loglevel": "notice",
- "logs-max": 10,
- "long": false,
- "maxsockets": 50,
- "message": "%s",
- "node-options": null,
- "node-version": "v14.8.0",
- "noproxy": null,
- "npm-version": "7.0.0",
- "offline": false,
- "omit": Array [],
- "only": null,
- "optional": true,
- "otp": null,
- "package": Array [],
- "package-lock": true,
- "package-lock-only": false,
- "parseable": false,
- "prefer-offline": false,
- "prefer-online": false,
- "preid": "",
- "production": false,
- "progress": true,
- "proxy": null,
- "read-only": false,
- "rebuild-bundle": true,
- "registry": "https://registry.npmjs.org/",
- "rollback": true,
- "save": true,
- "save-bundle": false,
- "save-dev": false,
- "save-exact": false,
- "save-optional": false,
- "save-prefix": "^",
- "save-prod": false,
- "scope": "",
- "script-shell": null,
- "scripts-prepend-node-path": "warn-only",
- "searchexclude": null,
- "searchlimit": 20,
- "searchopts": "",
- "searchstaleness": 900,
- "shell": "cmd.exe",
- "shrinkwrap": true,
- "sign-git-commit": false,
- "sign-git-tag": false,
- "sso-poll-frequency": 500,
- "sso-type": "oauth",
- "strict-peer-deps": false,
- "strict-ssl": true,
- "tag": "latest",
- "tag-version-prefix": "v",
- "timing": false,
- "tmp": "/tmp",
- "umask": 0,
- "unicode": true,
- "update-notifier": true,
- "usage": false,
- "user-agent": "npm/{npm-version} node/{node-version} {platform} {arch} {ci}",
- "userconfig": "~/.npmrc",
- "version": false,
- "versions": false,
- "viewer": "browser",
- },
- "shorthands": Object {
- "?": Array [
- "--usage",
- ],
- "a": Array [
- "--all",
- ],
- "B": Array [
- "--save-bundle",
- ],
- "c": Array [
- "--call",
- ],
- "C": Array [
- "--prefix",
- ],
- "d": Array [
- "--loglevel",
- "info",
- ],
- "D": Array [
- "--save-dev",
- ],
- "dd": Array [
- "--loglevel",
- "verbose",
- ],
- "ddd": Array [
- "--loglevel",
- "silly",
- ],
- "desc": Array [
- "--description",
- ],
- "E": Array [
- "--save-exact",
- ],
- "enjoy-by": Array [
- "--before",
- ],
- "f": Array [
- "--force",
- ],
- "g": Array [
- "--global",
- ],
- "h": Array [
- "--usage",
- ],
- "H": Array [
- "--usage",
- ],
- "help": Array [
- "--usage",
- ],
- "l": Array [
- "--long",
- ],
- "local": Array [
- "--no-global",
- ],
- "m": Array [
- "--message",
- ],
- "n": Array [
- "--no-yes",
- ],
- "no-desc": Array [
- "--no-description",
- ],
- "no-reg": Array [
- "--no-registry",
- ],
- "noreg": Array [
- "--no-registry",
- ],
- "O": Array [
- "--save-optional",
- ],
- "p": Array [
- "--parseable",
- ],
- "P": Array [
- "--save-prod",
- ],
- "porcelain": Array [
- "--parseable",
- ],
- "q": Array [
- "--loglevel",
- "warn",
- ],
- "quiet": Array [
- "--loglevel",
- "warn",
- ],
- "readonly": Array [
- "--read-only",
- ],
- "reg": Array [
- "--registry",
- ],
- "s": Array [
- "--loglevel",
- "silent",
- ],
- "S": Array [
- "--save",
- ],
- "silent": Array [
- "--loglevel",
- "silent",
- ],
- "v": Array [
- "--version",
- ],
- "verbose": Array [
- "--loglevel",
- "verbose",
- ],
- "y": Array [
- "--yes",
- ],
- },
- "types": Object {
- "_auth": Array [
- null,
- "{String TYPE}",
- ],
- "access": Array [
- null,
- "restricted",
- "public",
- ],
- "all": "{Boolean TYPE}",
- "allow-same-version": "{Boolean TYPE}",
- "also": Array [
- null,
- "dev",
- "development",
- ],
- "always-auth": "{Boolean TYPE}",
- "audit": "{Boolean TYPE}",
- "audit-level": Array [
- "low",
- "moderate",
- "high",
- "critical",
- "none",
- null,
- ],
- "auth-type": Array [
- "legacy",
- "sso",
- "saml",
- "oauth",
- ],
- "before": Array [
- null,
- "{Date TYPE}",
- ],
- "bin-links": "{Boolean TYPE}",
- "browser": Array [
- null,
- "{Boolean TYPE}",
- "{String TYPE}",
- ],
- "ca": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "cache": "{PATH MODULE}",
- "cache-lock-retries": "{Number TYPE}",
- "cache-lock-stale": "{Number TYPE}",
- "cache-lock-wait": "{Number TYPE}",
- "cache-max": "{Number TYPE}",
- "cache-min": "{Number TYPE}",
- "cafile": "{PATH MODULE}",
- "call": "{String TYPE}",
- "cert": Array [
- null,
- "{String TYPE}",
- ],
- "ci-name": Array [
- null,
- "{String TYPE}",
- ],
- "cidr": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "color": Array [
- "always",
- "{Boolean TYPE}",
- ],
- "commit-hooks": "{Boolean TYPE}",
- "depth": Array [
- null,
- "{Number TYPE}",
- ],
- "description": "{Boolean TYPE}",
- "dev": "{Boolean TYPE}",
- "diff": Array [
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "diff-dst-prefix": "{String TYPE}",
- "diff-ignore-all-space": "{Boolean TYPE}",
- "diff-name-only": "{Boolean TYPE}",
- "diff-no-prefix": "{Boolean TYPE}",
- "diff-src-prefix": "{String TYPE}",
- "diff-text": "{Boolean TYPE}",
- "diff-unified": Array [
- null,
- "{Number TYPE}",
- ],
- "dry-run": "{Boolean TYPE}",
- "editor": "{String TYPE}",
- "engine-strict": "{Boolean TYPE}",
- "fetch-retries": "{Number TYPE}",
- "fetch-retry-factor": "{Number TYPE}",
- "fetch-retry-maxtimeout": "{Number TYPE}",
- "fetch-retry-mintimeout": "{Number TYPE}",
- "fetch-timeout": "{Number TYPE}",
- "force": "{Boolean TYPE}",
- "foreground-script": "{Boolean TYPE}",
- "format-package-lock": "{Boolean TYPE}",
- "fund": "{Boolean TYPE}",
- "git": "{String TYPE}",
- "git-tag-version": "{Boolean TYPE}",
- "global": "{Boolean TYPE}",
- "global-style": "{Boolean TYPE}",
- "globalconfig": "{PATH MODULE}",
- "heading": "{String TYPE}",
- "https-proxy": Array [
- null,
- "{URL MODULE}",
- ],
- "if-present": "{Boolean TYPE}",
- "ignore-prepublish": "{Boolean TYPE}",
- "ignore-scripts": "{Boolean TYPE}",
- "include": Array [
- "{Array TYPE}",
- "prod",
- "dev",
- "optional",
- "peer",
- ],
- "include-staged": "{Boolean TYPE}",
- "init-author-email": "{String TYPE}",
- "init-author-name": "{String TYPE}",
- "init-author-url": Array [
- "",
- "{URL MODULE}",
- ],
- "init-license": "{String TYPE}",
- "init-module": "{PATH MODULE}",
- "init-version": "{SEMVER MODULE}",
- "init.author.email": "{String TYPE}",
- "init.author.name": "{String TYPE}",
- "init.author.url": Array [
- "",
- "{URL MODULE}",
- ],
- "init.license": "{String TYPE}",
- "init.module": "{PATH MODULE}",
- "init.version": "{SEMVER MODULE}",
- "json": "{Boolean TYPE}",
- "key": Array [
- null,
- "{String TYPE}",
- ],
- "legacy-bundling": "{Boolean TYPE}",
- "legacy-peer-deps": "{Boolean TYPE}",
- "link": "{Boolean TYPE}",
- "local-address": Array [
- undefined,
- ],
- "loglevel": Array [
- "silent",
- "error",
- "warn",
- "notice",
- "http",
- "timing",
- "info",
- "verbose",
- "silly",
- ],
- "logs-max": "{Number TYPE}",
- "long": "{Boolean TYPE}",
- "maxsockets": "{Number TYPE}",
- "message": "{String TYPE}",
- "node-options": Array [
- null,
- "{String TYPE}",
- ],
- "node-version": Array [
- null,
- "{SEMVER MODULE}",
- ],
- "noproxy": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "npm-version": "{SEMVER MODULE}",
- "offline": "{Boolean TYPE}",
- "omit": Array [
- "{Array TYPE}",
- "dev",
- "optional",
- "peer",
- ],
- "only": Array [
- null,
- "dev",
- "development",
- "prod",
- "production",
- ],
- "optional": "{Boolean TYPE}",
- "otp": Array [
- null,
- "{String TYPE}",
- ],
- "package": Array [
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "package-lock": "{Boolean TYPE}",
- "package-lock-only": "{Boolean TYPE}",
- "parseable": "{Boolean TYPE}",
- "prefer-offline": "{Boolean TYPE}",
- "prefer-online": "{Boolean TYPE}",
- "prefix": "{PATH MODULE}",
- "preid": "{String TYPE}",
- "production": "{Boolean TYPE}",
- "progress": "{Boolean TYPE}",
- "proxy": Array [
- null,
- false,
- "{URL MODULE}",
- ],
- "read-only": "{Boolean TYPE}",
- "rebuild-bundle": "{Boolean TYPE}",
- "registry": Array [
- null,
- "{URL MODULE}",
- ],
- "rollback": "{Boolean TYPE}",
- "save": "{Boolean TYPE}",
- "save-bundle": "{Boolean TYPE}",
- "save-dev": "{Boolean TYPE}",
- "save-exact": "{Boolean TYPE}",
- "save-optional": "{Boolean TYPE}",
- "save-prefix": "{String TYPE}",
- "save-prod": "{Boolean TYPE}",
- "scope": "{String TYPE}",
- "script-shell": Array [
- null,
- "{String TYPE}",
- ],
- "scripts-prepend-node-path": Array [
- "{Boolean TYPE}",
- "auto",
- "warn-only",
- ],
- "searchexclude": Array [
- null,
- "{String TYPE}",
- ],
- "searchlimit": "{Number TYPE}",
- "searchopts": "{String TYPE}",
- "searchstaleness": "{Number TYPE}",
- "shell": "{String TYPE}",
- "shrinkwrap": "{Boolean TYPE}",
- "sign-git-commit": "{Boolean TYPE}",
- "sign-git-tag": "{Boolean TYPE}",
- "sso-poll-frequency": "{Number TYPE}",
- "sso-type": Array [
- null,
- "oauth",
- "saml",
- ],
- "strict-peer-deps": "{Boolean TYPE}",
- "strict-ssl": "{Boolean TYPE}",
- "tag": "{String TYPE}",
- "tag-version-prefix": "{String TYPE}",
- "timing": "{Boolean TYPE}",
- "tmp": "{PATH MODULE}",
- "umask": "{Umask TYPE}",
- "unicode": "{Boolean TYPE}",
- "update-notifier": "{Boolean TYPE}",
- "usage": "{Boolean TYPE}",
- "user-agent": "{String TYPE}",
- "userconfig": "{PATH MODULE}",
- "version": "{Boolean TYPE}",
- "versions": "{Boolean TYPE}",
- "viewer": "{String TYPE}",
- },
-}
-`
-
-exports[`test/lib/utils/config.js TAP working network interfaces, not windows > must match snapshot 1`] = `
-Object {
- "defaults": Object {
- "_auth": null,
- "access": null,
- "all": false,
- "allow-same-version": false,
- "also": null,
- "always-auth": false,
- "audit": true,
- "audit-level": null,
- "auth-type": "legacy",
- "before": null,
- "bin-links": true,
- "browser": null,
- "ca": null,
- "cache": "{CACHE DIR} .npm",
- "cache-lock-retries": 10,
- "cache-lock-stale": 60000,
- "cache-lock-wait": 10000,
- "cache-max": null,
- "cache-min": 10,
- "cafile": null,
- "call": "",
- "cert": null,
- "ci-name": null,
- "cidr": null,
- "color": true,
- "commit-hooks": true,
- "depth": null,
- "description": true,
- "dev": false,
- "diff": Array [],
- "diff-dst-prefix": "",
- "diff-ignore-all-space": false,
- "diff-name-only": false,
- "diff-no-prefix": false,
- "diff-src-prefix": "",
- "diff-text": false,
- "diff-unified": null,
- "dry-run": false,
- "editor": "vim",
- "engine-strict": false,
- "fetch-retries": 2,
- "fetch-retry-factor": 10,
- "fetch-retry-maxtimeout": 60000,
- "fetch-retry-mintimeout": 10000,
- "fetch-timeout": 300000,
- "force": false,
- "foreground-script": false,
- "format-package-lock": true,
- "fund": true,
- "git": "git",
- "git-tag-version": true,
- "global": false,
- "global-style": false,
- "heading": "npm",
- "https-proxy": null,
- "if-present": false,
- "ignore-prepublish": false,
- "ignore-scripts": false,
- "include": Array [],
- "include-staged": false,
- "init-author-email": "",
- "init-author-name": "",
- "init-author-url": "",
- "init-license": "ISC",
- "init-module": "~/.npm-init.js",
- "init-version": "1.0.0",
- "init.author.email": "",
- "init.author.name": "",
- "init.author.url": "",
- "init.license": "ISC",
- "init.module": "~/.npm-init.js",
- "init.version": "1.0.0",
- "json": false,
- "key": null,
- "legacy-bundling": false,
- "legacy-peer-deps": false,
- "link": false,
- "local-address": undefined,
- "loglevel": "notice",
- "logs-max": 10,
- "long": false,
- "maxsockets": 50,
- "message": "%s",
- "node-options": null,
- "node-version": "v14.8.0",
- "noproxy": null,
- "npm-version": "7.0.0",
- "offline": false,
- "omit": Array [],
- "only": null,
- "optional": true,
- "otp": null,
- "package": Array [],
- "package-lock": true,
- "package-lock-only": false,
- "parseable": false,
- "prefer-offline": false,
- "prefer-online": false,
- "preid": "",
- "production": false,
- "progress": true,
- "proxy": null,
- "read-only": false,
- "rebuild-bundle": true,
- "registry": "https://registry.npmjs.org/",
- "rollback": true,
- "save": true,
- "save-bundle": false,
- "save-dev": false,
- "save-exact": false,
- "save-optional": false,
- "save-prefix": "^",
- "save-prod": false,
- "scope": "",
- "script-shell": null,
- "scripts-prepend-node-path": "warn-only",
- "searchexclude": null,
- "searchlimit": 20,
- "searchopts": "",
- "searchstaleness": 900,
- "shell": "/usr/local/bin/bash",
- "shrinkwrap": true,
- "sign-git-commit": false,
- "sign-git-tag": false,
- "sso-poll-frequency": 500,
- "sso-type": "oauth",
- "strict-peer-deps": false,
- "strict-ssl": true,
- "tag": "latest",
- "tag-version-prefix": "v",
- "timing": false,
- "tmp": "/tmp",
- "umask": 0,
- "unicode": true,
- "update-notifier": true,
- "usage": false,
- "user-agent": "npm/{npm-version} node/{node-version} {platform} {arch} {ci}",
- "userconfig": "~/.npmrc",
- "version": false,
- "versions": false,
- "viewer": "man",
- },
- "shorthands": Object {
- "?": Array [
- "--usage",
- ],
- "a": Array [
- "--all",
- ],
- "B": Array [
- "--save-bundle",
- ],
- "c": Array [
- "--call",
- ],
- "C": Array [
- "--prefix",
- ],
- "d": Array [
- "--loglevel",
- "info",
- ],
- "D": Array [
- "--save-dev",
- ],
- "dd": Array [
- "--loglevel",
- "verbose",
- ],
- "ddd": Array [
- "--loglevel",
- "silly",
- ],
- "desc": Array [
- "--description",
- ],
- "E": Array [
- "--save-exact",
- ],
- "enjoy-by": Array [
- "--before",
- ],
- "f": Array [
- "--force",
- ],
- "g": Array [
- "--global",
- ],
- "h": Array [
- "--usage",
- ],
- "H": Array [
- "--usage",
- ],
- "help": Array [
- "--usage",
- ],
- "l": Array [
- "--long",
- ],
- "local": Array [
- "--no-global",
- ],
- "m": Array [
- "--message",
- ],
- "n": Array [
- "--no-yes",
- ],
- "no-desc": Array [
- "--no-description",
- ],
- "no-reg": Array [
- "--no-registry",
- ],
- "noreg": Array [
- "--no-registry",
- ],
- "O": Array [
- "--save-optional",
- ],
- "p": Array [
- "--parseable",
- ],
- "P": Array [
- "--save-prod",
- ],
- "porcelain": Array [
- "--parseable",
- ],
- "q": Array [
- "--loglevel",
- "warn",
- ],
- "quiet": Array [
- "--loglevel",
- "warn",
- ],
- "readonly": Array [
- "--read-only",
- ],
- "reg": Array [
- "--registry",
- ],
- "s": Array [
- "--loglevel",
- "silent",
- ],
- "S": Array [
- "--save",
- ],
- "silent": Array [
- "--loglevel",
- "silent",
- ],
- "v": Array [
- "--version",
- ],
- "verbose": Array [
- "--loglevel",
- "verbose",
- ],
- "y": Array [
- "--yes",
- ],
- },
- "types": Object {
- "_auth": Array [
- null,
- "{String TYPE}",
- ],
- "access": Array [
- null,
- "restricted",
- "public",
- ],
- "all": "{Boolean TYPE}",
- "allow-same-version": "{Boolean TYPE}",
- "also": Array [
- null,
- "dev",
- "development",
- ],
- "always-auth": "{Boolean TYPE}",
- "audit": "{Boolean TYPE}",
- "audit-level": Array [
- "low",
- "moderate",
- "high",
- "critical",
- "none",
- null,
- ],
- "auth-type": Array [
- "legacy",
- "sso",
- "saml",
- "oauth",
- ],
- "before": Array [
- null,
- "{Date TYPE}",
- ],
- "bin-links": "{Boolean TYPE}",
- "browser": Array [
- null,
- "{Boolean TYPE}",
- "{String TYPE}",
- ],
- "ca": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "cache": "{PATH MODULE}",
- "cache-lock-retries": "{Number TYPE}",
- "cache-lock-stale": "{Number TYPE}",
- "cache-lock-wait": "{Number TYPE}",
- "cache-max": "{Number TYPE}",
- "cache-min": "{Number TYPE}",
- "cafile": "{PATH MODULE}",
- "call": "{String TYPE}",
- "cert": Array [
- null,
- "{String TYPE}",
- ],
- "ci-name": Array [
- null,
- "{String TYPE}",
- ],
- "cidr": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "color": Array [
- "always",
- "{Boolean TYPE}",
- ],
- "commit-hooks": "{Boolean TYPE}",
- "depth": Array [
- null,
- "{Number TYPE}",
- ],
- "description": "{Boolean TYPE}",
- "dev": "{Boolean TYPE}",
- "diff": Array [
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "diff-dst-prefix": "{String TYPE}",
- "diff-ignore-all-space": "{Boolean TYPE}",
- "diff-name-only": "{Boolean TYPE}",
- "diff-no-prefix": "{Boolean TYPE}",
- "diff-src-prefix": "{String TYPE}",
- "diff-text": "{Boolean TYPE}",
- "diff-unified": Array [
- null,
- "{Number TYPE}",
- ],
- "dry-run": "{Boolean TYPE}",
- "editor": "{String TYPE}",
- "engine-strict": "{Boolean TYPE}",
- "fetch-retries": "{Number TYPE}",
- "fetch-retry-factor": "{Number TYPE}",
- "fetch-retry-maxtimeout": "{Number TYPE}",
- "fetch-retry-mintimeout": "{Number TYPE}",
- "fetch-timeout": "{Number TYPE}",
- "force": "{Boolean TYPE}",
- "foreground-script": "{Boolean TYPE}",
- "format-package-lock": "{Boolean TYPE}",
- "fund": "{Boolean TYPE}",
- "git": "{String TYPE}",
- "git-tag-version": "{Boolean TYPE}",
- "global": "{Boolean TYPE}",
- "global-style": "{Boolean TYPE}",
- "globalconfig": "{PATH MODULE}",
- "heading": "{String TYPE}",
- "https-proxy": Array [
- null,
- "{URL MODULE}",
- ],
- "if-present": "{Boolean TYPE}",
- "ignore-prepublish": "{Boolean TYPE}",
- "ignore-scripts": "{Boolean TYPE}",
- "include": Array [
- "{Array TYPE}",
- "prod",
- "dev",
- "optional",
- "peer",
- ],
- "include-staged": "{Boolean TYPE}",
- "init-author-email": "{String TYPE}",
- "init-author-name": "{String TYPE}",
- "init-author-url": Array [
- "",
- "{URL MODULE}",
- ],
- "init-license": "{String TYPE}",
- "init-module": "{PATH MODULE}",
- "init-version": "{SEMVER MODULE}",
- "init.author.email": "{String TYPE}",
- "init.author.name": "{String TYPE}",
- "init.author.url": Array [
- "",
- "{URL MODULE}",
- ],
- "init.license": "{String TYPE}",
- "init.module": "{PATH MODULE}",
- "init.version": "{SEMVER MODULE}",
- "json": "{Boolean TYPE}",
- "key": Array [
- null,
- "{String TYPE}",
- ],
- "legacy-bundling": "{Boolean TYPE}",
- "legacy-peer-deps": "{Boolean TYPE}",
- "link": "{Boolean TYPE}",
- "local-address": Array [
- undefined,
- "127.0.0.1",
- "no place like home",
- ],
- "loglevel": Array [
- "silent",
- "error",
- "warn",
- "notice",
- "http",
- "timing",
- "info",
- "verbose",
- "silly",
- ],
- "logs-max": "{Number TYPE}",
- "long": "{Boolean TYPE}",
- "maxsockets": "{Number TYPE}",
- "message": "{String TYPE}",
- "node-options": Array [
- null,
- "{String TYPE}",
- ],
- "node-version": Array [
- null,
- "{SEMVER MODULE}",
- ],
- "noproxy": Array [
- null,
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "npm-version": "{SEMVER MODULE}",
- "offline": "{Boolean TYPE}",
- "omit": Array [
- "{Array TYPE}",
- "dev",
- "optional",
- "peer",
- ],
- "only": Array [
- null,
- "dev",
- "development",
- "prod",
- "production",
- ],
- "optional": "{Boolean TYPE}",
- "otp": Array [
- null,
- "{String TYPE}",
- ],
- "package": Array [
- "{String TYPE}",
- "{Array TYPE}",
- ],
- "package-lock": "{Boolean TYPE}",
- "package-lock-only": "{Boolean TYPE}",
- "parseable": "{Boolean TYPE}",
- "prefer-offline": "{Boolean TYPE}",
- "prefer-online": "{Boolean TYPE}",
- "prefix": "{PATH MODULE}",
- "preid": "{String TYPE}",
- "production": "{Boolean TYPE}",
- "progress": "{Boolean TYPE}",
- "proxy": Array [
- null,
- false,
- "{URL MODULE}",
- ],
- "read-only": "{Boolean TYPE}",
- "rebuild-bundle": "{Boolean TYPE}",
- "registry": Array [
- null,
- "{URL MODULE}",
- ],
- "rollback": "{Boolean TYPE}",
- "save": "{Boolean TYPE}",
- "save-bundle": "{Boolean TYPE}",
- "save-dev": "{Boolean TYPE}",
- "save-exact": "{Boolean TYPE}",
- "save-optional": "{Boolean TYPE}",
- "save-prefix": "{String TYPE}",
- "save-prod": "{Boolean TYPE}",
- "scope": "{String TYPE}",
- "script-shell": Array [
- null,
- "{String TYPE}",
- ],
- "scripts-prepend-node-path": Array [
- "{Boolean TYPE}",
- "auto",
- "warn-only",
- ],
- "searchexclude": Array [
- null,
- "{String TYPE}",
- ],
- "searchlimit": "{Number TYPE}",
- "searchopts": "{String TYPE}",
- "searchstaleness": "{Number TYPE}",
- "shell": "{String TYPE}",
- "shrinkwrap": "{Boolean TYPE}",
- "sign-git-commit": "{Boolean TYPE}",
- "sign-git-tag": "{Boolean TYPE}",
- "sso-poll-frequency": "{Number TYPE}",
- "sso-type": Array [
- null,
- "oauth",
- "saml",
- ],
- "strict-peer-deps": "{Boolean TYPE}",
- "strict-ssl": "{Boolean TYPE}",
- "tag": "{String TYPE}",
- "tag-version-prefix": "{String TYPE}",
- "timing": "{Boolean TYPE}",
- "tmp": "{PATH MODULE}",
- "umask": "{Umask TYPE}",
- "unicode": "{Boolean TYPE}",
- "update-notifier": "{Boolean TYPE}",
- "usage": "{Boolean TYPE}",
- "user-agent": "{String TYPE}",
- "userconfig": "{PATH MODULE}",
- "version": "{Boolean TYPE}",
- "versions": "{Boolean TYPE}",
- "viewer": "{String TYPE}",
- },
-}
-`
diff --git a/tap-snapshots/test-lib-utils-flat-options.js-TAP.test.js b/tap-snapshots/test-lib-utils-flat-options.js-TAP.test.js
deleted file mode 100644
index 47de89e97..000000000
--- a/tap-snapshots/test-lib-utils-flat-options.js-TAP.test.js
+++ /dev/null
@@ -1,129 +0,0 @@
-/* IMPORTANT
- * This snapshot file is auto-generated, but designed for humans.
- * It should be checked into source control and tracked carefully.
- * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
- * Make sure to inspect the output below. Do not ignore changes!
- */
-'use strict'
-exports[`test/lib/utils/flat-options.js TAP basic > flat options 1`] = `
-Object {
- "_auth": undefined,
- "@scope:registry": "@scope:registry",
- "//nerf.dart:_authToken": "//nerf.dart:_authToken",
- "access": "access",
- "all": undefined,
- "allowSameVersion": "allow-same-version",
- "alwaysAuth": "always-auth",
- "audit": "audit",
- "auditLevel": "audit-level",
- "authType": "auth-type",
- "before": "before",
- "binLinks": "bin-links",
- "browser": "browser",
- "ca": "ca",
- "cache": "cache/_cacache",
- "cafile": "cafile",
- "call": "call",
- "cert": "cert",
- "cidr": "cidr",
- "color": true,
- "commitHooks": "commit-hooks",
- "defaultTag": "tag",
- "depth": "depth",
- "diff": undefined,
- "diffDstPrefix": undefined,
- "diffIgnoreAllSpace": undefined,
- "diffNameOnly": undefined,
- "diffNoPrefix": undefined,
- "diffSrcPrefix": undefined,
- "diffText": undefined,
- "diffUnified": undefined,
- "dmode": 511,
- "dryRun": "dry-run",
- "editor": "editor",
- "engineStrict": "engine-strict",
- "fmode": 438,
- "force": "force",
- "foregroundScripts": false,
- "formatPackageLock": "format-package-lock",
- "fund": "fund",
- "git": "git",
- "gitTagVersion": "git-tag-version",
- "global": "global",
- "globalPrefix": "/usr/local",
- "globalStyle": "global-style",
- "hashAlgorithm": "sha1",
- "ignoreScripts": undefined,
- "includeStaged": undefined,
- "json": undefined,
- "key": "key",
- "legacyBundling": "legacy-bundling",
- "legacyPeerDeps": undefined,
- "localPrefix": "/path/to/npm/cli",
- "log": Object {},
- "long": undefined,
- "message": "message",
- "nodeBin": "/path/to/some/node",
- "nodeVersion": "1.2.3",
- "noProxy": "noproxy",
- "npmBin": "/path/to/npm/bin.js",
- "npmCommand": null,
- "npmSession": "12345",
- "npmVersion": "7.6.5",
- "offline": "offline",
- "omit": Array [],
- "otp": "otp",
- "package": "package",
- "packageLock": true,
- "packageLockOnly": "package-lock-only",
- "parseable": undefined,
- "preferDedupe": undefined,
- "preferOffline": "prefer-offline",
- "preferOnline": "prefer-online",
- "prefix": "/path/to/npm/cli",
- "preid": "preid",
- "projectScope": "@npmcli",
- "proxy": "proxy",
- "readOnly": "read-only",
- "rebuildBundle": "rebuild-bundle",
- "registry": "registry",
- "retry": Object {
- "factor": "fetch-retry-factor",
- "maxTimeout": "fetch-retry-maxtimeout",
- "minTimeout": "fetch-retry-mintimeout",
- "retries": "fetch-retries",
- },
- "save": "save",
- "saveBundle": false,
- "savePrefix": "",
- "saveType": "peerOptional",
- "scope": "",
- "scriptShell": "script-shell",
- "search": Object {
- "description": "description",
- "exclude": "searchexclude",
- "limit": "searchlimit",
- "opts": Null Object {
- "from": "1",
- },
- "staleness": "searchstaleness",
- },
- "shell": undefined,
- "signGitCommit": "sign-git-commit",
- "signGitTag": "sign-git-tag",
- "ssoPollFrequency": undefined,
- "ssoType": undefined,
- "strictPeerDeps": undefined,
- "strictSSL": "strict-ssl",
- "tag": "tag",
- "tagVersionPrefix": "tag-version-prefix",
- "timeout": "fetch-timeout",
- "tmp": "/tmp",
- "umask": 18,
- "unicode": undefined,
- "userAgent": "user-agent",
- "viewer": "viewer",
- "which": undefined,
- "yes": undefined,
-}
-`
diff --git a/test/lib/utils/config.js b/test/lib/utils/config.js
deleted file mode 100644
index 4d4b1a1d1..000000000
--- a/test/lib/utils/config.js
+++ /dev/null
@@ -1,143 +0,0 @@
-const t = require('tap')
-const requireInject = require('require-inject')
-
-// have to fake the node version, or else it'll only pass on this one
-Object.defineProperty(process, 'version', {
- value: 'v14.8.0',
-})
-
-t.formatSnapshot = obj => {
- if (typeof obj !== 'object' || !obj || !obj.types)
- return obj
-
- return {
- ...obj,
- defaults: {
- ...obj.defaults,
- cache: '{CACHE DIR} ' + path.basename(obj.defaults.cache),
- },
- types: formatTypes(obj.types),
- }
-}
-
-const path = require('path')
-const url = require('url')
-const semver = require('semver')
-
-const formatTypes = (types) => Object.entries(types).map(([key, value]) => {
- return [key, formatTypeValue(value)]
-}).reduce((set, [key, value]) => {
- set[key] = value
- return set
-}, {})
-
-const formatTypeValue = (value) => {
- if (Array.isArray(value))
- return value.map(formatTypeValue)
- else if (value === url)
- return '{URL MODULE}'
- else if (value === path)
- return '{PATH MODULE}'
- else if (value === semver)
- return '{SEMVER MODULE}'
- else if (typeof value === 'function')
- return `{${value.name} TYPE}`
- else
- return value
-}
-
-process.env.ComSpec = 'cmd.exe'
-process.env.SHELL = '/usr/local/bin/bash'
-process.env.LANG = 'UTF-8'
-delete process.env.LC_ALL
-delete process.env.LC_CTYPE
-process.env.EDITOR = 'vim'
-process.env.VISUAL = 'mate'
-
-const networkInterfacesThrow = () => {
- throw new Error('no network interfaces for some reason')
-}
-const networkInterfaces = () => ({
- eth420: [{ address: '127.0.0.1' }],
- eth69: [{ address: 'no place like home' }],
-})
-const tmpdir = () => '/tmp'
-const os = { networkInterfaces, tmpdir }
-const pkg = { version: '7.0.0' }
-
-t.test('working network interfaces, not windows', t => {
- const config = requireInject('../../../lib/utils/config.js', {
- os,
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': false,
- '../../../package.json': pkg,
- })
- t.matchSnapshot(config)
- t.end()
-})
-
-t.test('no working network interfaces, on windows', t => {
- const config = requireInject('../../../lib/utils/config.js', {
- os: { tmpdir, networkInterfaces: networkInterfacesThrow },
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': true,
- '../../../package.json': pkg,
- })
- t.matchSnapshot(config)
- t.end()
-})
-
-t.test('no comspec on windows', t => {
- delete process.env.ComSpec
- const config = requireInject('../../../lib/utils/config.js', {
- os: { tmpdir, networkInterfaces: networkInterfacesThrow },
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': true,
- })
- t.equal(config.defaults.shell, 'cmd')
- t.end()
-})
-
-t.test('no shell on posix', t => {
- delete process.env.SHELL
- const config = requireInject('../../../lib/utils/config.js', {
- os,
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': false,
- })
- t.equal(config.defaults.shell, 'sh')
- t.end()
-})
-
-t.test('no EDITOR env, use VISUAL', t => {
- delete process.env.EDITOR
- const config = requireInject('../../../lib/utils/config.js', {
- os,
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': false,
- })
- t.equal(config.defaults.editor, 'mate')
- t.end()
-})
-
-t.test('no VISUAL, use system default, not windows', t => {
- delete process.env.VISUAL
- const config = requireInject('../../../lib/utils/config.js', {
- os,
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': false,
- })
- t.equal(config.defaults.editor, 'vi')
- t.end()
-})
-
-t.test('no VISUAL, use system default, not windows', t => {
- delete process.env.VISUAL
- const config = requireInject('../../../lib/utils/config.js', {
- os,
- '@npmcli/ci-detect': () => false,
- '../../../lib/utils/is-windows.js': true,
- })
- t.equal(config.defaults.editor, 'notepad.exe')
- t.end()
-})
diff --git a/test/lib/utils/flat-options.js b/test/lib/utils/flat-options.js
deleted file mode 100644
index 6f580fabc..000000000
--- a/test/lib/utils/flat-options.js
+++ /dev/null
@@ -1,359 +0,0 @@
-const t = require('tap')
-
-process.env.NODE = '/path/to/some/node'
-process.env.NODE_ENV = 'development'
-
-const logs = []
-const log = require('npmlog')
-log.warn = (...args) => logs.push(['warn', ...args])
-log.verbose = (...args) => logs.push(['verbose', ...args])
-
-class Mocknpm {
- constructor (opts = {}) {
- this.modes = {
- exec: 0o777,
- file: 0o666,
- umask: 0o22,
- }
- this.color = true
- this.projectScope = '@npmcli'
- this.tmp = '/tmp'
- this.command = null
- this.globalPrefix = '/usr/local'
- this.localPrefix = '/path/to/npm/cli'
- this.prefix = this.localPrefix
- this.version = '7.6.5'
- this.config = new MockConfig(opts)
- this.flatOptions = null
- }
-}
-
-class MockConfig {
- constructor (opts = {}) {
- this.list = [{
- cache: 'cache',
- 'node-version': '1.2.3',
- global: 'global',
- registry: 'registry',
- access: 'access',
- 'always-auth': 'always-auth',
- audit: 'audit',
- 'audit-level': 'audit-level',
- 'auth-type': 'auth-type',
- before: 'before',
- browser: 'browser',
- ca: 'ca',
- cafile: 'cafile',
- call: 'call',
- cert: 'cert',
- key: 'key',
- 'cache-lock-retries': 'cache-lock-retries',
- 'cache-lock-stale': 'cache-lock-stale',
- 'cache-lock-wait': 'cache-lock-wait',
- cidr: 'cidr',
- 'read-only': 'read-only',
- preid: 'preid',
- 'tag-version-prefix': 'tag-version-prefix',
- 'allow-same-version': 'allow-same-version',
- message: 'message',
- 'commit-hooks': 'commit-hooks',
- 'git-tag-version': 'git-tag-version',
- 'sign-git-commit': 'sign-git-commit',
- 'sign-git-tag': 'sign-git-tag',
- depth: 'depth',
- description: 'description',
- searchexclude: 'searchexclude',
- searchlimit: 'searchlimit',
- searchopts: 'from=1',
- searchstaleness: 'searchstaleness',
- 'dry-run': 'dry-run',
- 'engine-strict': 'engine-strict',
- 'fetch-retries': 'fetch-retries',
- 'fetch-retry-factor': 'fetch-retry-factor',
- 'fetch-retry-mintimeout': 'fetch-retry-mintimeout',
- 'fetch-retry-maxtimeout': 'fetch-retry-maxtimeout',
- 'fetch-timeout': 'fetch-timeout',
- force: 'force',
- 'format-package-lock': 'format-package-lock',
- fund: 'fund',
- git: 'git',
- viewer: 'viewer',
- editor: 'editor',
- 'bin-links': 'bin-links',
- 'rebuild-bundle': 'rebuild-bundle',
- package: 'package',
- 'package-lock': 'package-lock',
- 'package-lock-only': 'package-lock-only',
- 'global-style': 'global-style',
- 'legacy-bundling': 'legacy-bundling',
- 'script-shell': 'script-shell',
- omit: [],
- include: [],
- save: 'save',
- 'save-bundle': 'save-bundle',
- 'save-dev': 'save-dev',
- 'save-optional': 'save-optional',
- 'save-peer': 'save-peer',
- 'save-prod': 'save-prod',
- 'save-exact': 'save-exact',
- 'save-prefix': 'save-prefix',
- otp: 'otp',
- offline: 'offline',
- 'prefer-online': 'prefer-online',
- 'prefer-offline': 'prefer-offline',
- 'cache-max': 'cache-max',
- 'cache-min': 'cache-min',
- 'strict-ssl': 'strict-ssl',
- scope: '',
- tag: 'tag',
- 'user-agent': 'user-agent',
- '@scope:registry': '@scope:registry',
- '//nerf.dart:_authToken': '//nerf.dart:_authToken',
- proxy: 'proxy',
- noproxy: 'noproxy',
- ...opts,
- }]
- }
-
- get (key) {
- return this.list[0][key]
- }
-
- set (key, val) {
- this.list[0][key] = val
- }
-}
-
-const flatOptions = require('../../../lib/utils/flat-options.js')
-t.match(logs, [[
- 'verbose',
- 'npm-session',
- /^[0-9a-f]{16}$/,
-]], 'logged npm session verbosely')
-logs.length = 0
-
-t.test('basic', t => {
- const npm = new Mocknpm()
- const generatedFlat = flatOptions(npm)
- const clean = {
- ...generatedFlat,
- npmBin: '/path/to/npm/bin.js',
- log: {},
- npmSession: '12345',
- cache: generatedFlat.cache.replace(/\\/g, '/'),
- }
- t.matchSnapshot(clean, 'flat options')
- t.equal(generatedFlat.npmCommand, null, 'command not set yet')
- npm.command = 'view'
- t.equal(generatedFlat.npmCommand, 'view', 'command updated via getter')
- t.equal(generatedFlat.npmBin, require.main.filename)
- // test the object is frozen
- generatedFlat.newField = 'asdf'
- t.equal(generatedFlat.newField, undefined, 'object is frozen')
- const preExistingOpts = { flat: 'options' }
- npm.flatOptions = preExistingOpts
- t.equal(flatOptions(npm), preExistingOpts, 'use pre-existing npm.flatOptions')
- t.end()
-})
-
-t.test('get preferOffline from cache-min', t => {
- const npm = new Mocknpm({
- 'cache-min': 9999999,
- 'prefer-offline': undefined,
- })
- const opts = flatOptions(npm)
- t.equal(opts.preferOffline, true, 'got preferOffline from cache min')
- logs.length = 0
- t.equal(opts.cacheMin, undefined, 'opts.cacheMin is not set')
- t.match(logs, [])
- logs.length = 0
- t.end()
-})
-
-t.test('get preferOnline from cache-max', t => {
- const npm = new Mocknpm({
- 'cache-max': -1,
- 'prefer-online': undefined,
- })
- const opts = flatOptions(npm)
- t.equal(opts.preferOnline, true, 'got preferOnline from cache min')
- logs.length = 0
- t.equal(opts.cacheMax, undefined, 'opts.cacheMax is not set')
- t.match(logs, [])
- logs.length = 0
- t.end()
-})
-
-t.test('tag emits warning', t => {
- const npm = new Mocknpm({ tag: 'foobar' })
- t.equal(flatOptions(npm).tag, 'foobar', 'tag is foobar')
- t.match(logs, [])
- logs.length = 0
- t.end()
-})
-
-t.test('omit/include options', t => {
- t.test('omit explicitly', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- omit: ['dev', 'optional', 'peer'],
- })
- t.strictSame(flatOptions(npm).omit, ['dev', 'optional', 'peer'])
- t.equal(process.env.NODE_ENV, 'production')
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.test('omit and include some', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- omit: ['dev', 'optional', 'peer'],
- include: ['peer'],
- })
- t.strictSame(flatOptions(npm).omit, ['dev', 'optional'])
- t.equal(process.env.NODE_ENV, 'production')
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.test('dev flag', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- omit: ['dev', 'optional', 'peer'],
- include: [],
- dev: true,
- })
- t.strictSame(flatOptions(npm).omit, ['optional', 'peer'])
- t.equal(process.env.NODE_ENV, NODE_ENV)
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.test('production flag', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- omit: [],
- include: [],
- production: true,
- })
- t.strictSame(flatOptions(npm).omit, ['dev'])
- t.equal(process.env.NODE_ENV, 'production')
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.test('only', t => {
- const { NODE_ENV } = process.env
- const cases = ['prod', 'production']
- t.plan(cases.length)
- cases.forEach(c => t.test(c, t => {
- const npm = new Mocknpm({
- omit: [],
- include: [],
- only: c,
- })
- t.strictSame(flatOptions(npm).omit, ['dev'])
- t.equal(process.env.NODE_ENV, 'production')
- process.env.NODE_ENV = NODE_ENV
- t.end()
- }))
- })
-
- t.test('also dev', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- omit: ['dev', 'optional', 'peer'],
- also: 'dev',
- })
- t.strictSame(flatOptions(npm).omit, ['optional', 'peer'])
- t.equal(process.env.NODE_ENV, NODE_ENV)
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.test('no-optional', t => {
- const { NODE_ENV } = process.env
- const npm = new Mocknpm({
- optional: false,
- omit: null,
- include: null,
- })
- t.strictSame(flatOptions(npm).omit, ['optional'])
- t.equal(process.env.NODE_ENV, NODE_ENV)
- process.env.NODE_ENV = NODE_ENV
- t.end()
- })
-
- t.end()
-})
-
-t.test('get the node without the environ', t => {
- delete process.env.NODE
- t.equal(flatOptions(new Mocknpm()).nodeBin, process.execPath)
- t.end()
-})
-
-t.test('various default values and falsey fallbacks', t => {
- const npm = new Mocknpm({
- 'script-shell': false,
- registry: 'http://example.com',
- searchlimit: 0,
- 'save-exact': false,
- 'save-prefix': '>=',
- })
- const opts = flatOptions(npm)
- t.equal(opts.scriptShell, undefined, 'scriptShell is undefined if falsey')
- t.equal(opts.search.limit, 20, 'searchLimit defaults to 20')
- t.equal(opts.savePrefix, '>=', 'save-prefix respected if no save-exact')
- t.equal(opts.scope, '', 'scope defaults to empty string')
- logs.length = 0
- t.end()
-})
-
-t.test('legacy _auth token', t => {
- const npm = new Mocknpm({
- _auth: 'asdfasdf',
- })
- t.strictSame(
- flatOptions(npm)._auth,
- 'asdfasdf',
- 'should set legacy _auth token'
- )
- t.end()
-})
-
-t.test('save-type', t => {
- const base = {
- 'save-optional': false,
- 'save-peer': false,
- 'save-dev': false,
- 'save-prod': false,
- }
- const cases = [
- ['peerOptional', {
- 'save-optional': true,
- 'save-peer': true,
- }],
- ['optional', {
- 'save-optional': true,
- }],
- ['dev', {
- 'save-dev': true,
- }],
- ['peer', {
- 'save-peer': true,
- }],
- ['prod', {
- 'save-prod': true,
- }],
- [null, {}],
- ]
- for (const [expect, options] of cases) {
- const opts = flatOptions(new Mocknpm({
- ...base,
- ...options,
- }))
- t.equal(opts.saveType, expect, JSON.stringify(options))
- }
- t.end()
-})