diff --git a/README.md b/README.md index 8f4aba8..a8e70cf 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ [standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg [standard-url]: https://standardjs.com +### Deprecated: This package isn't used by `standard` anymore, as of `standard` v16. See: https://github.com/standard/standard/issues/1316 + ESlint Rules for the Standard Linter ### Usage @@ -18,12 +20,12 @@ ESlint Rules for the Standard Linter ### Configuration ```js -{ +module.exports = { rules: { - 'standard/object-curly-even-spacing': [2, "either"], - 'standard/array-bracket-even-spacing': [2, "either"], - 'standard/computed-property-even-spacing': [2, "even"], - 'standard/no-callback-literal': [2, ["cb", "callback"]] + 'standard/object-curly-even-spacing': [2, 'either'], + 'standard/array-bracket-even-spacing': [2, 'either'], + 'standard/computed-property-even-spacing': [2, 'even'], + 'standard/no-callback-literal': [2, ['cb', 'callback']] } } ``` @@ -36,4 +38,3 @@ There are several rules that were created specifically for the `standard` linter - `array-bracket-even-spacing` - Like `array-bracket-even-spacing` from ESLint except it has an `either` option which lets you have 1 or 0 spacing padding. - `computed-property-even-spacing` - Like `computed-property-spacing` around ESLint except is has an `even` option which lets you have 1 or 0 spacing padding. - `no-callback-literal` - Ensures that we strictly follow the callback pattern with `undefined`, `null` or an error object in the first position of a callback. - diff --git a/index.js b/index.js index 203b2c3..90a3125 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,4 @@ +/*! eslint-plugin-standard. MIT License. Feross Aboukhadijeh */ 'use strict' module.exports = { diff --git a/package.json b/package.json index 5df6930..0432dbb 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,12 @@ { "name": "eslint-plugin-standard", "description": "ESlint Plugin for the Standard Linter", - "version": "4.0.2", - "author": "Jamund Ferguson ", + "version": "4.1.0", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, "bugs": { "url": "https://github.com/standard/eslint-plugin-standard/issues" }, @@ -28,5 +32,19 @@ }, "peerDependencies": { "eslint": ">=5.0.0" - } + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] } diff --git a/rules/array-bracket-even-spacing.js b/rules/array-bracket-even-spacing.js index 63b42a8..35277b2 100644 --- a/rules/array-bracket-even-spacing.js +++ b/rules/array-bracket-even-spacing.js @@ -14,14 +14,15 @@ module.exports = { meta: { + type: 'layout', docs: { url: 'https://github.com/standard/eslint-plugin-standard#rules-explanations' } }, create: function (context) { - var spaced = context.options[0] === 'always' - var either = context.options[0] === 'either' + const spaced = context.options[0] === 'always' + const either = context.options[0] === 'either' /** * Determines whether an option is set, relative to the spacing option. @@ -34,7 +35,7 @@ module.exports = { return context.options[1] != null ? context.options[1][option] === !spaced : false } - var options = { + const options = { either, spaced, singleElementException: isOptionSet('singleValue'), @@ -119,8 +120,8 @@ module.exports = { * @returns {boolean} */ function isEvenlySpacedAndNotTooLong (node, start, end) { - var expectedSpace = start[1].range[0] - start[0].range[1] - var endSpace = end[1].range[0] - end[0].range[1] + const expectedSpace = start[1].range[0] - start[0].range[1] + const endSpace = end[1].range[0] - end[0].range[1] return endSpace === expectedSpace && endSpace <= 1 } @@ -134,19 +135,19 @@ module.exports = { return } - var first = context.getFirstToken(node) - var second = context.getFirstToken(node, 1) - var penultimate = context.getLastToken(node, 1) - var last = context.getLastToken(node) + const first = context.getFirstToken(node) + const second = context.getFirstToken(node, 1) + const penultimate = context.getLastToken(node, 1) + const last = context.getLastToken(node) - var openingBracketMustBeSpaced = + const openingBracketMustBeSpaced = (options.objectsInArraysException && second.value === '{') || (options.arraysInArraysException && second.value === '[') || (options.singleElementException && node.elements.length === 1) ? !options.spaced : options.spaced - var closingBracketMustBeSpaced = + const closingBracketMustBeSpaced = (options.objectsInArraysException && penultimate.value === '}') || (options.arraysInArraysException && penultimate.value === ']') || (options.singleElementException && node.elements.length === 1) diff --git a/rules/computed-property-even-spacing.js b/rules/computed-property-even-spacing.js index 150eb42..72b67b8 100644 --- a/rules/computed-property-even-spacing.js +++ b/rules/computed-property-even-spacing.js @@ -11,14 +11,15 @@ module.exports = { meta: { + type: 'layout', docs: { url: 'https://github.com/standard/eslint-plugin-standard#rules-explanations' } }, create: function (context) { - var propertyNameMustBeSpaced = context.options[0] === 'always' // default is "never" - var propertyNameMustBeEven = context.options[0] === 'even' // default is "never" + const propertyNameMustBeSpaced = context.options[0] === 'always' // default is "never" + const propertyNameMustBeEven = context.options[0] === 'even' // default is "never" // -------------------------------------------------------------------------- // Helpers @@ -100,13 +101,13 @@ module.exports = { return } - var property = node[propertyName] + const property = node[propertyName] - var before = context.getTokenBefore(property) - var first = context.getFirstToken(property) - var last = context.getLastToken(property) - var after = context.getTokenAfter(property) - var startSpace, endSpace + const before = context.getTokenBefore(property) + const first = context.getFirstToken(property) + const last = context.getLastToken(property) + const after = context.getTokenAfter(property) + let startSpace, endSpace if (propertyNameMustBeEven) { if (!isSameLine(before, after)) { diff --git a/rules/no-callback-literal.js b/rules/no-callback-literal.js index 16f0b9f..0bd5348 100644 --- a/rules/no-callback-literal.js +++ b/rules/no-callback-literal.js @@ -15,6 +15,7 @@ * @returns {boolean} True if there is a chance it contains an Error obj */ function couldBeError (node) { + let exprs switch (node.type) { case 'Identifier': case 'CallExpression': @@ -28,7 +29,7 @@ function couldBeError (node) { return couldBeError(node.right) case 'SequenceExpression': - var exprs = node.expressions + exprs = node.expressions return exprs.length !== 0 && couldBeError(exprs[exprs.length - 1]) case 'LogicalExpression': @@ -48,13 +49,14 @@ function couldBeError (node) { module.exports = { meta: { + type: 'suggestion', docs: { url: 'https://github.com/standard/eslint-plugin-standard#rules-explanations' } }, create: function (context) { - var callbackNames = context.options[0] || ['callback', 'cb'] + const callbackNames = context.options[0] || ['callback', 'cb'] function isCallback (name) { return callbackNames.indexOf(name) > -1 @@ -63,8 +65,8 @@ module.exports = { return { CallExpression: function (node) { - var errorArg = node.arguments[0] - var calleeName = node.callee.name + const errorArg = node.arguments[0] + const calleeName = node.callee.name if (errorArg && !couldBeError(errorArg) && isCallback(calleeName)) { context.report(node, 'Unexpected literal in error position of callback.') diff --git a/rules/object-curly-even-spacing.js b/rules/object-curly-even-spacing.js index 9271257..d0eff49 100644 --- a/rules/object-curly-even-spacing.js +++ b/rules/object-curly-even-spacing.js @@ -14,14 +14,15 @@ module.exports = { meta: { + type: 'layout', docs: { url: 'https://github.com/standard/eslint-plugin-standard#rules-explanations' } }, create: function (context) { - var spaced = context.options[0] === 'always' - var either = context.options[0] === 'either' + const spaced = context.options[0] === 'always' + const either = context.options[0] === 'either' /** * Determines whether an option is set, relative to the spacing option. @@ -34,7 +35,7 @@ module.exports = { return context.options[1] != null ? context.options[1][option] === !spaced : false } - var options = { + const options = { spaced, either, arraysInObjectsException: isOptionSet('arraysInObjects'), @@ -118,8 +119,8 @@ module.exports = { * @returns {boolean} */ function isEvenlySpacedAndNotTooLong (node, start, end) { - var expectedSpace = start[1].range[0] - start[0].range[1] - var endSpace = end[1].range[0] - end[0].range[1] + const expectedSpace = start[1].range[0] - start[0].range[1] + const endSpace = end[1].range[0] - end[0].range[1] return endSpace === expectedSpace && endSpace <= 1 } @@ -133,7 +134,7 @@ module.exports = { * @returns {void} */ function validateBraceSpacing (node, first, second, penultimate, last) { - var closingCurlyBraceMustBeSpaced = + const closingCurlyBraceMustBeSpaced = (options.arraysInObjectsException && penultimate.value === ']') || (options.objectsInObjectsException && penultimate.value === '}') ? !options.spaced @@ -186,13 +187,13 @@ module.exports = { return } - var firstSpecifier = node.properties[0] - var lastSpecifier = node.properties[node.properties.length - 1] + const firstSpecifier = node.properties[0] + const lastSpecifier = node.properties[node.properties.length - 1] - var first = context.getTokenBefore(firstSpecifier) - var second = context.getFirstToken(firstSpecifier) - var penultimate = context.getLastToken(lastSpecifier) - var last = context.getTokenAfter(lastSpecifier) + const first = context.getTokenBefore(firstSpecifier) + const second = context.getFirstToken(firstSpecifier) + let penultimate = context.getLastToken(lastSpecifier) + let last = context.getTokenAfter(lastSpecifier) // support trailing commas if (last.value === ',') { @@ -205,15 +206,15 @@ module.exports = { // import {y} from 'x' ImportDeclaration: function (node) { - var firstSpecifier = node.specifiers[0] - var lastSpecifier = node.specifiers[node.specifiers.length - 1] + const firstSpecifier = node.specifiers[0] + const lastSpecifier = node.specifiers[node.specifiers.length - 1] // don't do anything for namespace or default imports if (firstSpecifier && lastSpecifier && firstSpecifier.type === 'ImportSpecifier' && lastSpecifier.type === 'ImportSpecifier') { - var first = context.getTokenBefore(firstSpecifier) - var second = context.getFirstToken(firstSpecifier) - var penultimate = context.getLastToken(lastSpecifier) - var last = context.getTokenAfter(lastSpecifier) + const first = context.getTokenBefore(firstSpecifier) + const second = context.getFirstToken(firstSpecifier) + const penultimate = context.getLastToken(lastSpecifier) + const last = context.getTokenAfter(lastSpecifier) validateBraceSpacing(node, first, second, penultimate, last) } @@ -225,12 +226,12 @@ module.exports = { return } - var firstSpecifier = node.specifiers[0] - var lastSpecifier = node.specifiers[node.specifiers.length - 1] - var first = context.getTokenBefore(firstSpecifier) - var second = context.getFirstToken(firstSpecifier) - var penultimate = context.getLastToken(lastSpecifier) - var last = context.getTokenAfter(lastSpecifier) + const firstSpecifier = node.specifiers[0] + const lastSpecifier = node.specifiers[node.specifiers.length - 1] + const first = context.getTokenBefore(firstSpecifier) + const second = context.getFirstToken(firstSpecifier) + const penultimate = context.getLastToken(lastSpecifier) + const last = context.getTokenAfter(lastSpecifier) validateBraceSpacing(node, first, second, penultimate, last) }, @@ -241,10 +242,10 @@ module.exports = { return } - var first = context.getFirstToken(node) - var second = context.getFirstToken(node, 1) - var penultimate = context.getLastToken(node, 1) - var last = context.getLastToken(node) + const first = context.getFirstToken(node) + const second = context.getFirstToken(node, 1) + const penultimate = context.getLastToken(node, 1) + const last = context.getLastToken(node) validateBraceSpacing(node, first, second, penultimate, last) } diff --git a/tests/array-bracket-even-spacing.js b/tests/array-bracket-even-spacing.js index baf839b..e31f189 100644 --- a/tests/array-bracket-even-spacing.js +++ b/tests/array-bracket-even-spacing.js @@ -9,15 +9,15 @@ // Requirements // ------------------------------------------------------------------------------ -var RuleTester = require('eslint').RuleTester -var rule = require('../rules/array-bracket-even-spacing') -var parserOptions = { ecmaVersion: 2018, sourceType: 'module' } +const RuleTester = require('eslint').RuleTester +const rule = require('../rules/array-bracket-even-spacing') +const parserOptions = { ecmaVersion: 2018, sourceType: 'module' } // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('array-bracket-even-spacing', rule, { valid: [ diff --git a/tests/computed-property-even-spacing.js b/tests/computed-property-even-spacing.js index 5165d30..57c53c3 100644 --- a/tests/computed-property-even-spacing.js +++ b/tests/computed-property-even-spacing.js @@ -9,16 +9,16 @@ // Requirements // ------------------------------------------------------------------------------ -var RuleTester = require('eslint').RuleTester -var rule = require('../rules/computed-property-even-spacing') +const RuleTester = require('eslint').RuleTester +const rule = require('../rules/computed-property-even-spacing') -var parserOptions = { ecmaVersion: 2018, sourceType: 'module' } +const parserOptions = { ecmaVersion: 2018, sourceType: 'module' } // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('computed-property-even-spacing', rule, { valid: [ diff --git a/tests/no-callback-literal.js b/tests/no-callback-literal.js index 8a151de..34aebfb 100644 --- a/tests/no-callback-literal.js +++ b/tests/no-callback-literal.js @@ -9,14 +9,14 @@ // Requirements // ------------------------------------------------------------------------------ -var RuleTester = require('eslint').RuleTester -var rule = require('../rules/no-callback-literal') +const RuleTester = require('eslint').RuleTester +const rule = require('../rules/no-callback-literal') // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-callback-literal', rule, { valid: [ diff --git a/tests/object-curly-even-spacing.js b/tests/object-curly-even-spacing.js index 8ee8c86..746fae8 100644 --- a/tests/object-curly-even-spacing.js +++ b/tests/object-curly-even-spacing.js @@ -10,15 +10,15 @@ // Requirements // ------------------------------------------------------------------------------ -var RuleTester = require('eslint').RuleTester -var rule = require('../rules/object-curly-even-spacing') -var parserOptions = { ecmaVersion: 2018, sourceType: 'module' } +const RuleTester = require('eslint').RuleTester +const rule = require('../rules/object-curly-even-spacing') +const parserOptions = { ecmaVersion: 2018, sourceType: 'module' } // ------------------------------------------------------------------------------ // Tests // ------------------------------------------------------------------------------ -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('object-curly-even-spacing', rule, { valid: [