Skip to content

Commit

Permalink
Add max-len to lint rules
Browse files Browse the repository at this point in the history
PR-URL: #2361
Credit: @Edu93Jer
Close: #2361
Reviewed-by: @isaacs

EDIT(@isaacs): amended to match some of the fixes to our current style
conventions
  • Loading branch information
Edu93Jer authored and isaacs committed Dec 18, 2020
1 parent be4a090 commit a92d310
Show file tree
Hide file tree
Showing 16 changed files with 88 additions and 30 deletions.
7 changes: 7 additions & 0 deletions .eslintrc.json
Expand Up @@ -67,6 +67,13 @@
"key-spacing": ["error", { "beforeColon": false, "afterColon": true }],
"keyword-spacing": ["error", { "before": true, "after": true }],
"lines-between-class-members": ["error", "always", { "exceptAfterSingleLine": true }],
"max-len": ["error", 80, {
"ignoreUrls": true,
"ignoreComments": false,
"ignoreRegExpLiterals": true,
"ignoreStrings": true,
"ignoreTemplateLiterals": true
}],
"new-cap": ["error", { "newIsCap": true, "capIsNew": false, "properties": true }],
"new-parens": "error",
"no-array-constructor": "error",
Expand Down
3 changes: 2 additions & 1 deletion lib/deprecate.js
Expand Up @@ -25,7 +25,8 @@ const completion = (opts, cb) => {
return libaccess.lsPackages(username, npm.flatOptions).then((packages) => {
return Object.keys(packages)
.filter((name) => packages[name] === 'write' &&
(opts.conf.argv.remain.length === 0 || name.startsWith(opts.conf.argv.remain[0]))
(opts.conf.argv.remain.length === 0 ||
name.startsWith(opts.conf.argv.remain[0]))
)
})
}).then((list) => cb(null, list), (err) => cb(err))
Expand Down
10 changes: 8 additions & 2 deletions lib/doctor.js
Expand Up @@ -59,7 +59,8 @@ const getLatestNodejsVersion = async () => {
if (lts && semver.gt(version, maxLTS))
maxLTS = version

if (semver.satisfies(version, currentRange) && semver.gt(version, maxCurrent))
if (semver.satisfies(version, currentRange) &&
semver.gt(version, maxCurrent))
maxCurrent = version
}
const recommended = semver.gt(maxCurrent, maxLTS) ? maxCurrent : maxLTS
Expand Down Expand Up @@ -175,7 +176,12 @@ const verifyCachedFiles = async () => {
tracker.info('verifyCachedFiles', 'Verifying the npm cache')
try {
const stats = await cacache.verify(npm.flatOptions.cache)
const { badContentCount, reclaimedCount, missingContent, reclaimedSize } = stats
const {
badContentCount,
reclaimedCount,
missingContent,
reclaimedSize,
} = stats
if (badContentCount || reclaimedCount || missingContent) {
if (badContentCount)
tracker.warn('verifyCachedFiles', `Corrupted content removed: ${badContentCount}`)
Expand Down
3 changes: 2 additions & 1 deletion lib/init.js
Expand Up @@ -41,8 +41,9 @@ const init = async args => {
}
}
npm.config.set('package', [])
const newArgs = [packageName, ...args.slice(1)]
return new Promise((res, rej) => {
npm.commands.exec([packageName, ...args.slice(1)], er => er ? rej(er) : res())
npm.commands.exec(newArgs, er => er ? rej(er) : res())
})
}

Expand Down
3 changes: 2 additions & 1 deletion lib/npm.js
Expand Up @@ -13,7 +13,8 @@ require('graceful-fs').gracefulify(require('fs'))

const procLogListener = require('./utils/proc-log-listener.js')

const hasOwnProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)
const hasOwnProperty = (obj, key) =>
Object.prototype.hasOwnProperty.call(obj, key)

// the first time `npm.commands.xyz` is loaded, it gets added
// to the cmds object, so we don't have to load it again.
Expand Down
24 changes: 21 additions & 3 deletions lib/outdated.js
Expand Up @@ -167,7 +167,7 @@ async function outdated_ (tree, deps, opts) {
}
} catch (err) {
// silently catch and ignore ETARGET, E403 &
// E404 errors, deps are just skipped
// E404 errors, deps are just skipped {
if (!(
err.code === 'ETARGET' ||
err.code === 'E403' ||
Expand Down Expand Up @@ -234,7 +234,16 @@ function makePretty (dep, opts) {
// <fullpath>:<name@wanted>:<name@installed>:<name@latest>:<dependedby>
function makeParseable (list, opts) {
return list.map(dep => {
const { name, current, wanted, latest, path, dependent, type, homepage } = dep
const {
name,
current,
wanted,
latest,
path,
dependent,
type,
homepage,
} = dep
const out = [
path,
name + '@' + wanted,
Expand All @@ -252,7 +261,16 @@ function makeParseable (list, opts) {
function makeJSON (list, opts) {
const out = {}
list.forEach(dep => {
const { name, current, wanted, latest, path, type, dependent, homepage } = dep
const {
name,
current,
wanted,
latest,
path,
type,
dependent,
homepage,
} = dep
out[name] = {
current,
wanted,
Expand Down
3 changes: 2 additions & 1 deletion lib/profile.js
Expand Up @@ -127,7 +127,8 @@ function get (args) {
})
} else {
const table = new Table()
Object.keys(cleaned).forEach((k) => table.push({ [ansistyles.bright(k)]: cleaned[k] }))
for (const k of Object.keys(cleaned))
table.push({ [ansistyles.bright(k)]: cleaned[k] })
output(table.toString())
}
}
Expand Down
3 changes: 2 additions & 1 deletion lib/repo.js
Expand Up @@ -36,7 +36,8 @@ const getRepo = async pkg => {
}

const info = hostedFromMani(mani)
const url = info ? info.browse(mani.repository.directory) : unknownHostedUrl(rurl)
const url = info ?
info.browse(mani.repository.directory) : unknownHostedUrl(rurl)

if (!url) {
throw Object.assign(new Error('no repository: could not get url'), {
Expand Down
19 changes: 12 additions & 7 deletions lib/token.js
Expand Up @@ -74,16 +74,19 @@ function token (args, cb) {

function generateTokenIds (tokens, minLength) {
const byId = {}
tokens.forEach((token) => {
for (const token of tokens) {
token.id = token.key
for (let ii = minLength; ii < token.key.length; ++ii) {
if (!tokens.some((ot) => ot !== token && ot.key.slice(0, ii) === token.key.slice(0, ii))) {
const match = tokens.some(ot =>
ot !== token &&
ot.key.slice(0, ii) === token.key.slice(0, ii))
if (!match) {
token.id = token.key.slice(0, ii)
break
}
}
byId[token.id] = token
})
}
return byId
}

Expand Down Expand Up @@ -136,7 +139,8 @@ function list (args) {
return
}
generateTokenIds(tokens, 6)
const idWidth = tokens.reduce((acc, token) => Math.max(acc, token.id.length), 0)
const idWidth = tokens.reduce((acc, token) =>
Math.max(acc, token.id.length), 0)
const table = new Table({
head: ['id', 'token', 'created', 'readonly', 'CIDR whitelist'],
colWidths: [Math.max(idWidth, 2) + 2, 9, 12, 10],
Expand Down Expand Up @@ -170,8 +174,8 @@ function rm (args) {
else if (matches.length > 1)
throw new Error(`Token ID "${id}" was ambiguous, a new token may have been created since you last ran \`npm token list\`.`)
else {
const tokenMatches = tokens.filter((token) => id.indexOf(token.token) === 0)
if (tokenMatches.length === 0)
const tokenMatches = tokens.some(t => id.indexOf(t.token) === 0)
if (!tokenMatches)
throw new Error(`Unknown token id or value "${id}".`)

toRemove.push(id)
Expand Down Expand Up @@ -212,7 +216,8 @@ function create (args) {
Object.keys(result).forEach((k) => output(k + '\t' + result[k]))
else {
const table = new Table()
Object.keys(result).forEach((k) => table.push({ [ansistyles.bright(k)]: String(result[k]) }))
for (const k of Object.keys(result))
table.push({ [ansistyles.bright(k)]: String(result[k]) })
output(table.toString())
}
})
Expand Down
4 changes: 2 additions & 2 deletions lib/unpublish.js
Expand Up @@ -93,8 +93,8 @@ async function unpublish (args) {

const { name, version, publishConfig } = manifest
const pkgJsonSpec = npa.resolve(name, version)

res = await otplease(opts, opts => libunpub(pkgJsonSpec, { ...opts, publishConfig }))
const optsWithPub = { ...opts, publishConfig }
res = await otplease(opts, opts => libunpub(pkgJsonSpec, optsWithPub))
pkgName = name
pkgVersion = version ? `@${version}` : ''
} else {
Expand Down
12 changes: 8 additions & 4 deletions lib/utils/error-message.js
Expand Up @@ -193,10 +193,14 @@ module.exports = (er) => {
else {
detail.push(['404', 'This package name is not valid, because', ''])

const errorsArray = (valResult.errors || []).concat(valResult.warnings || [])
errorsArray.forEach(function (item, idx) {
detail.push(['404', ' ' + (idx + 1) + '. ' + item])
})
const errorsArray = [
...(valResult.errors || []),
...(valResult.warnings || []),
]
errorsArray.forEach((item, idx) => detail.push([
'404',
' ' + (idx + 1) + '. ' + item,
]))
}

detail.push(['404', '\nNote that you can also install from a'])
Expand Down
4 changes: 3 additions & 1 deletion lib/utils/file-exists.js
Expand Up @@ -3,6 +3,8 @@ const util = require('util')

const stat = util.promisify(fs.stat)

const fileExists = (file) => stat(file).then((stat) => stat.isFile()).catch(() => false)
const fileExists = (file) => stat(file)
.then((stat) => stat.isFile())
.catch(() => false)

module.exports = fileExists
2 changes: 1 addition & 1 deletion lib/utils/reify-output.js
@@ -1,7 +1,7 @@
// pass in an arborist object, and it'll output the data about what
// was done, what was audited, etc.
//
// added 351 packages, removed 132 packages, and audited 13388 packages in 19.157s
// added ## packages, removed ## packages, and audited ## packages in 19.157s
//
// 1 package is looking for funding
// run `npm fund` for details
Expand Down
13 changes: 10 additions & 3 deletions lib/view.js
Expand Up @@ -196,7 +196,8 @@ const prettyView = async (packument, manifest, opts) => {
name: color.yellow(manifest._npmUser.name),
email: color.cyan(manifest._npmUser.email),
}),
modified: packument.time ? color.yellow(relativeDate(packument.time[packument.version])) : undefined,
modified: !packument.time ? undefined
: color.yellow(relativeDate(packument.time[packument.version])),
maintainers: (packument.maintainers || []).map((u) => unparsePerson({
name: color.yellow(u.name),
email: color.cyan(u.email),
Expand Down Expand Up @@ -387,8 +388,14 @@ async function printData (data, name, opts) {
if (includeVersions || includeFields || typeof d !== 'string') {
if (opts.json)
msgJson[msgJson.length - 1][f] = d
else
d = inspect(d, { showHidden: false, depth: 5, colors: npm.color, maxArrayLength: null })
else {
d = inspect(d, {
showHidden: false,
depth: 5,
colors: npm.color,
maxArrayLength: null,
})
}
} else if (typeof d === 'string' && opts.json)
d = JSON.stringify(d)

Expand Down
3 changes: 2 additions & 1 deletion test/lib/help-search.js
Expand Up @@ -40,7 +40,8 @@ const globDir = {
'npm-more-useless.md': 'exec exec',
'npm-extra-useless.md': 'exec\nexec\nexec',
}
const glob = (p, cb) => cb(null, Object.keys(globDir).map((file) => join(globRoot, file)))
const glob = (p, cb) =>
cb(null, Object.keys(globDir).map((file) => join(globRoot, file)))

const helpSearch = requireInject('../../lib/help-search.js', {
'../../lib/npm.js': npm,
Expand Down
5 changes: 4 additions & 1 deletion test/lib/utils/reify-output.js
Expand Up @@ -245,7 +245,10 @@ t.test('packages changed message', t => {
settings.json = json
npmock.command = command
const mock = {
actualTree: { inventory: { size: audited, has: () => true }, children: [] },
actualTree: {
inventory: { size: audited, has: () => true },
children: [],
},
auditReport: audited ? {
toJSON: () => mock.auditReport,
vulnerabilities: {},
Expand Down

0 comments on commit a92d310

Please sign in to comment.