diff options
Diffstat (limited to 'lib/utils')
-rw-r--r-- | lib/utils/audit-error.js | 3 | ||||
-rw-r--r-- | lib/utils/completion/installed-deep.js | 3 | ||||
-rw-r--r-- | lib/utils/completion/installed-shallow.js | 6 | ||||
-rw-r--r-- | lib/utils/get-identity.js | 3 | ||||
-rw-r--r-- | lib/utils/lifecycle-cmd.js | 21 | ||||
-rw-r--r-- | lib/utils/npm-usage.js | 10 | ||||
-rw-r--r-- | lib/utils/open-url.js | 41 | ||||
-rw-r--r-- | lib/utils/read-local-package.js | 4 | ||||
-rw-r--r-- | lib/utils/reify-finish.js | 9 | ||||
-rw-r--r-- | lib/utils/reify-output.js | 13 | ||||
-rw-r--r-- | lib/utils/usage.js | 4 |
11 files changed, 59 insertions, 58 deletions
diff --git a/lib/utils/audit-error.js b/lib/utils/audit-error.js index c7423c447..ae0749ff6 100644 --- a/lib/utils/audit-error.js +++ b/lib/utils/audit-error.js @@ -4,8 +4,7 @@ // returns 'true' if there was an error, false otherwise const output = require('./output.js') -const npm = require('../npm.js') -const auditError = (report) => { +const auditError = (npm, report) => { if (!report || !report.error) return false diff --git a/lib/utils/completion/installed-deep.js b/lib/utils/completion/installed-deep.js index f464bb9a9..b65c17e41 100644 --- a/lib/utils/completion/installed-deep.js +++ b/lib/utils/completion/installed-deep.js @@ -1,8 +1,7 @@ const { resolve } = require('path') const Arborist = require('@npmcli/arborist') -const npm = require('../../npm.js') -const installedDeep = async () => { +const installedDeep = async (npm) => { const { depth, global, diff --git a/lib/utils/completion/installed-shallow.js b/lib/utils/completion/installed-shallow.js index c9c680e7d..1c9b8ef5a 100644 --- a/lib/utils/completion/installed-shallow.js +++ b/lib/utils/completion/installed-shallow.js @@ -1,10 +1,8 @@ -const npm = require('../../npm.js') const { promisify } = require('util') const readdir = promisify(require('readdir-scoped-modules')) -const names = global => readdir(global ? npm.globalDir : npm.localDir) - -const installedShallow = async (opts) => { +const installedShallow = async (npm, opts) => { + const names = global => readdir(global ? npm.globalDir : npm.localDir) const { conf: { argv: { remain } } } = opts if (remain.length > 3) return null diff --git a/lib/utils/get-identity.js b/lib/utils/get-identity.js index d5c560161..e92a2c524 100644 --- a/lib/utils/get-identity.js +++ b/lib/utils/get-identity.js @@ -1,10 +1,9 @@ const npmFetch = require('npm-registry-fetch') -const npm = require('../npm') const needsAuthError = (msg) => Object.assign(new Error(msg), { code: 'ENEEDAUTH' }) -module.exports = async (opts = {}) => { +module.exports = async (npm, opts = {}) => { const { registry } = opts if (!registry) throw Object.assign(new Error('No registry specified.'), { code: 'ENOREGISTRY' }) diff --git a/lib/utils/lifecycle-cmd.js b/lib/utils/lifecycle-cmd.js index 94b109942..8be9b5a12 100644 --- a/lib/utils/lifecycle-cmd.js +++ b/lib/utils/lifecycle-cmd.js @@ -1,10 +1,19 @@ // The implementation of commands that are just "run a script" -// test, start, stop, restart - +// restart, start, stop, test const usageUtil = require('./usage.js') -module.exports = (npm, stage) => { - const cmd = (args, cb) => npm.commands['run-script']([stage, ...args], cb) - const usage = usageUtil(stage, `npm ${stage} [-- <args>]`) - return Object.assign(cmd, { usage }) +class LifecycleCmd { + constructor (npm, stage) { + this.npm = npm + this.stage = stage + } + + get usage () { + return usageUtil(this.stage, `npm ${this.stage} [-- <args>]`) + } + + exec (args, cb) { + this.npm.commands['run-script']([this.stage, ...args], cb) + } } +module.exports = LifecycleCmd diff --git a/lib/utils/npm-usage.js b/lib/utils/npm-usage.js index d4261f79d..220f8037f 100644 --- a/lib/utils/npm-usage.js +++ b/lib/utils/npm-usage.js @@ -1,10 +1,9 @@ -const npm = require('../npm.js') const didYouMean = require('./did-you-mean.js') const { dirname } = require('path') const output = require('./output.js') const { cmdList } = require('./cmd-list') -module.exports = (valid = true) => { +module.exports = (npm, valid = true) => { npm.config.set('loglevel', 'silent') const usesBrowser = npm.config.get('viewer') === 'browser' ? ' (in a browser)' : '' @@ -22,7 +21,7 @@ npm help <term> search for help on <term>${usesBrowser} npm help npm more involved overview${usesBrowser} All commands: -${npm.config.get('long') ? usages() : ('\n ' + wrap(cmdList))} +${npm.config.get('long') ? usages(npm) : ('\n ' + wrap(cmdList))} Specify configs in the ini-formatted file: ${npm.config.get('userconfig')} @@ -59,12 +58,11 @@ const wrap = (arr) => { return out.join('\n ').substr(2) } -const usages = () => { +const usages = (npm) => { // return a string of <command>: <usage> let maxLen = 0 return cmdList.reduce((set, c) => { - set.push([c, require(`../${npm.deref(c)}.js`).usage || - /* istanbul ignore next - all commands should have usage */ '']) + set.push([c, npm.commands[c].usage]) maxLen = Math.max(maxLen, c.length) return set }, []) diff --git a/lib/utils/open-url.js b/lib/utils/open-url.js index 28c2d038a..1fe456bd0 100644 --- a/lib/utils/open-url.js +++ b/lib/utils/open-url.js @@ -1,19 +1,12 @@ -const npm = require('../npm.js') const output = require('./output.js') const opener = require('opener') const { URL } = require('url') -const isUrlValid = url => { - try { - return /^(https?|file):$/.test(new URL(url).protocol) - } catch (_) { - return false - } -} - // attempt to open URL in web-browser, print address otherwise: -module.exports = function open (url, errMsg, cb, browser = npm.config.get('browser')) { +const open = async (npm, url, errMsg) => { + const browser = npm.config.get('browser') + function printAlternateMsg () { const json = npm.config.get('json') const alternateMsg = json @@ -28,18 +21,28 @@ module.exports = function open (url, errMsg, cb, browser = npm.config.get('brows if (browser === false) { printAlternateMsg() - return cb() + return } - if (!isUrlValid(url)) - return cb(new Error('Invalid URL: ' + url)) + try { + if (!/^(https?|file):$/.test(new URL(url).protocol)) + throw new Error() + } catch (_) { + throw new Error('Invalid URL: ' + url) + } const command = browser === true ? null : browser - opener(url, { command }, (er) => { - if (er && er.code === 'ENOENT') { - printAlternateMsg() - return cb() - } else - return cb(er) + await new Promise((resolve, reject) => { + opener(url, { command }, (err) => { + if (err) { + if (err.code === 'ENOENT') + printAlternateMsg() + else + return reject(err) + } + return resolve() + }) }) } + +module.exports = open diff --git a/lib/utils/read-local-package.js b/lib/utils/read-local-package.js index 7ab130c1f..c31bca994 100644 --- a/lib/utils/read-local-package.js +++ b/lib/utils/read-local-package.js @@ -1,8 +1,6 @@ const { resolve } = require('path') const readJson = require('read-package-json-fast') -const npm = require('../npm.js') - -async function readLocalPackageName (cb) { +async function readLocalPackageName (npm) { if (npm.flatOptions.global) return diff --git a/lib/utils/reify-finish.js b/lib/utils/reify-finish.js index 9c95e9fcf..1c02b93a4 100644 --- a/lib/utils/reify-finish.js +++ b/lib/utils/reify-finish.js @@ -1,17 +1,16 @@ const reifyOutput = require('./reify-output.js') -const npm = require('../npm.js') const ini = require('ini') const util = require('util') const fs = require('fs') const { writeFile } = fs.promises || { writeFile: util.promisify(fs.writeFile) } const {resolve} = require('path') -const reifyFinish = async arb => { - await saveBuiltinConfig(arb) - reifyOutput(arb) +const reifyFinish = async (npm, arb) => { + await saveBuiltinConfig(npm, arb) + reifyOutput(npm, arb) } -const saveBuiltinConfig = async arb => { +const saveBuiltinConfig = async (npm, arb) => { const { options: { global }, actualTree } = arb if (!global) return diff --git a/lib/utils/reify-output.js b/lib/utils/reify-output.js index 4abaadc2e..216f0e902 100644 --- a/lib/utils/reify-output.js +++ b/lib/utils/reify-output.js @@ -9,7 +9,6 @@ // found 37 vulnerabilities (5 low, 7 moderate, 25 high) // run `npm audit fix` to fix them, or `npm audit` for details -const npm = require('../npm.js') const log = require('npmlog') const output = require('./output.js') const { depth } = require('treeverse') @@ -19,7 +18,7 @@ const { readTree: getFundingInfo } = require('libnpmfund') const auditError = require('./audit-error.js') // TODO: output JSON if flatOptions.json is true -const reifyOutput = arb => { +const reifyOutput = (npm, arb) => { // don't print any info in --silent mode if (log.levels[log.level] > log.levels.error) return @@ -29,7 +28,7 @@ const reifyOutput = arb => { // note: fails and crashes if we're running audit fix and there was an error // which is a good thing, because there's no point printing all this other // stuff in that case! - const auditReport = auditError(arb.auditReport) ? null : arb.auditReport + const auditReport = auditError(npm, arb.auditReport) ? null : arb.auditReport const summary = { added: 0, @@ -75,9 +74,9 @@ const reifyOutput = arb => { } output(JSON.stringify(summary, 0, 2)) } else { - packagesChangedMessage(summary) + packagesChangedMessage(npm, summary) packagesFundingMessage(summary) - printAuditReport(auditReport) + printAuditReport(npm, auditReport) } } @@ -85,7 +84,7 @@ const reifyOutput = arb => { // at the end if there's still stuff, because it's silly for `npm audit` // to tell you to run `npm audit` for details. otherwise, use the summary // report. if we get here, we know it's not quiet or json. -const printAuditReport = report => { +const printAuditReport = (npm, report) => { if (!report) return @@ -102,7 +101,7 @@ const printAuditReport = report => { output('\n' + res.report) } -const packagesChangedMessage = ({ added, removed, changed, audited }) => { +const packagesChangedMessage = (npm, { added, removed, changed, audited }) => { const msg = ['\n'] if (added === 0 && removed === 0 && changed === 0) { msg.push('up to date') diff --git a/lib/utils/usage.js b/lib/utils/usage.js index ddcbd708b..5f4eca73e 100644 --- a/lib/utils/usage.js +++ b/lib/utils/usage.js @@ -1,7 +1,7 @@ -var aliases = require('../utils/cmd-list').aliases +const aliases = require('../utils/cmd-list').aliases module.exports = function usage (cmd, txt, opt) { - var post = Object.keys(aliases).reduce(function (p, c) { + const post = Object.keys(aliases).reduce(function (p, c) { var val = aliases[c] if (val !== cmd) return p |