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
path: root/lib/utils
diff options
context:
space:
mode:
Diffstat (limited to 'lib/utils')
-rw-r--r--lib/utils/audit-error.js3
-rw-r--r--lib/utils/completion/installed-deep.js3
-rw-r--r--lib/utils/completion/installed-shallow.js6
-rw-r--r--lib/utils/get-identity.js3
-rw-r--r--lib/utils/lifecycle-cmd.js21
-rw-r--r--lib/utils/npm-usage.js10
-rw-r--r--lib/utils/open-url.js41
-rw-r--r--lib/utils/read-local-package.js4
-rw-r--r--lib/utils/reify-finish.js9
-rw-r--r--lib/utils/reify-output.js13
-rw-r--r--lib/utils/usage.js4
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