From 497708a2fe1123323949361bc16a7de06071296d Mon Sep 17 00:00:00 2001 From: samreid Date: Fri, 26 Feb 2021 15:12:34 -0700 Subject: [PATCH] Remove unlikely rules, see https://github.com/phetsims/phet-info/issues/150 and https://github.com/phetsims/phet-info/issues/156 --- eslint/format_eslintrc.js | 242 +++++++++----------------------------- 1 file changed, 54 insertions(+), 188 deletions(-) diff --git a/eslint/format_eslintrc.js b/eslint/format_eslintrc.js index ed415fd01..eb2e9b077 100644 --- a/eslint/format_eslintrc.js +++ b/eslint/format_eslintrc.js @@ -22,7 +22,45 @@ module.exports = { root: true, // TODO: is this needed? https://github.com/phetsims/phet-info/issues/150 // The new rules, overrides, etc. + // SR and MK deleted rules that we think we would never use. rules: { + 'object-curly-newline': [ 'error', { + ObjectExpression: { minProperties: 4, multiline: true, consistent: true }, + ObjectPattern: { minProperties: 4, multiline: true, consistent: true }, + ImportDeclaration: { minProperties: 4, multiline: true, consistent: true }, + ExportDeclaration: { minProperties: 4, multiline: true, consistent: true } + } ], + + // this option sets a specific tab width for your code + // https://eslint.org/docs/rules/indent + indent: [ 'error', 2, { + SwitchCase: 1, + VariableDeclarator: 'first', + outerIIFEBody: 1, + + // MemberExpression: null, + FunctionDeclaration: { + parameters: 'first', + body: 1 + }, + FunctionExpression: { + parameters: 'first', + body: 1 + }, + CallExpression: { + arguments: 1 + }, + ArrayExpression: 'first', + ObjectExpression: 'first', + ImportDeclaration: 'first', + flatTernaryExpressions: true, + + // list derived from https://github.com/benjamn/ast-types/blob/HEAD/def/jsx.js + ignoredNodes: [ 'ConditionalExpression' ], + ignoreComments: false + } ], + + 'no-multi-spaces': 'error', // enforce line breaks after opening and before closing array brackets // https://eslint.org/docs/rules/array-bracket-newline @@ -40,102 +78,16 @@ module.exports = { // TODO: perhaps update webstorm rules, https://github.com/phetsims/phet-info/issues/150 // 'block-spacing': [ 'error', 'always' ], - // enforce or disallow capitalization of the first letter of a comment - // https://eslint.org/docs/rules/capitalized-comments - 'capitalized-comments': [ 'off', 'never', { - line: { - ignorePattern: '.*', - ignoreInlineComments: true, - ignoreConsecutiveComments: true - }, - block: { - ignorePattern: '.*', - ignoreInlineComments: true, - ignoreConsecutiveComments: true - } - } ], - - // enforce newline at the end of file, with no multiple empty lines - // TODO: add to knit picky rules, https://github.com/phetsims/phet-info/issues/150 - // 'eol-last': [ 'error', 'never' ], - - // requires function names to match the name of the variable or property to which they are - // assigned - // https://eslint.org/docs/rules/func-name-matching - 'func-name-matching': [ 'off', 'always', { - includeCommonJSModuleExports: false, - considerPropertyDescriptor: true - } ], - - // require function expressions to have a name - // https://eslint.org/docs/rules/func-names - // 'func-names': 'warn', - - // enforces use of function declarations or expressions - // https://eslint.org/docs/rules/func-style - // TODO: enable - 'func-style': [ 'off', 'expression' ], - // enforce consistent line breaks inside function parentheses // https://eslint.org/docs/rules/function-paren-newline // TODO: https://github.com/phetsims/phet-info/issues/150 should we turn this on? // I disabled it for compatibility with some formatting I saw in fourier // 'function-paren-newline': [ 'error', 'consistent' ], - // Blacklist certain identifiers to prevent them being used - // https://eslint.org/docs/rules/id-blacklist - // TODO: semver-major, remove once eslint v7.4+ is required - 'id-blacklist': 'off', - - // disallow specified identifiers - // https://eslint.org/docs/rules/id-denylist - 'id-denylist': 'off', - - // this option enforces minimum and maximum identifier lengths - // (variable names, property names etc.) - 'id-length': 'off', - - // require identifiers to match the provided regular expression - 'id-match': 'off', - // Enforce the location of arrow function bodies with implicit returns // https://eslint.org/docs/rules/implicit-arrow-linebreak // 'implicit-arrow-linebreak': [ 'error', 'beside' ], - // specify whether double or single quotes should be used in JSX attributes - // https://eslint.org/docs/rules/jsx-quotes - 'jsx-quotes': [ 'off', 'prefer-double' ], - - // enforce position of line comments - // https://eslint.org/docs/rules/line-comment-position - // TODO: enable? - 'line-comment-position': [ 'off', { - position: 'above', - ignorePattern: '', - applyDefaultPatterns: true - } ], - - // disallow mixed 'LF' and 'CRLF' as linebreaks - // https://eslint.org/docs/rules/linebreak-style - // This is commented out because on windows this is just noisy. Git is already set up to commit the appropriate line breaks. - // 'linebreak-style': [ 'error', 'unix' ], - - // enforces empty lines around comments - // PhET devs do not want this to be so strict in general - // TODO: add to extra knit-picky rules in the future. https://github.com/phetsims/phet-info/issues/150 - // 'lines-around-comment': [ 'error', { beforeLineComment: true } ], - - // require or disallow newlines around directives - // https://eslint.org/docs/rules/lines-around-directive - // "use strict" can do what ever it wants! - // 'lines-around-directive': [ 'error', { - // before: 'always', - // after: 'always' - // } ], - - // specify the maximum depth that blocks can be nested - 'max-depth': [ 'off', 4 ], - // specify the maximum length of a line in your program // https://eslint.org/docs/rules/max-len 'max-len': [ 'off', 120, 2, { @@ -146,62 +98,9 @@ module.exports = { ignoreTemplateLiterals: true } ], - // specify the max number of lines in a file - // https://eslint.org/docs/rules/max-lines - 'max-lines': [ 'off', { - max: 300, - skipBlankLines: true, - skipComments: true - } ], - - // enforce a maximum function length - // https://eslint.org/docs/rules/max-lines-per-function - 'max-lines-per-function': [ 'off', { - max: 50, - skipBlankLines: true, - skipComments: true, - IIFEs: true - } ], - - // specify the maximum depth callbacks can be nested - 'max-nested-callbacks': 'off', - // limits the number of parameters that can be used in the function declaration. 'max-params': [ 'off', 3 ], - // specify the maximum number of statement allowed in a function - 'max-statements': [ 'off', 10 ], - - // restrict the number of statements per line - // https://eslint.org/docs/rules/max-statements-per-line - 'max-statements-per-line': [ 'off', { max: 1 } ], - - // enforce a particular style for multiline comments - // https://eslint.org/docs/rules/multiline-comment-style - 'multiline-comment-style': [ 'off', 'starred-block' ], - - // require multiline ternary - // https://eslint.org/docs/rules/multiline-ternary - // TODO: enable? - 'multiline-ternary': [ 'off', 'never' ], - - // allow/disallow an empty newline after var statement - 'newline-after-var': 'off', - - // https://eslint.org/docs/rules/newline-before-return - 'newline-before-return': 'off', - - // disallow use of the continue statement - // https://eslint.org/docs/rules/no-continue - // 'no-continue': 'error', - - // disallow comments inline after code - 'no-inline-comments': 'off', - - // disallow if as the only statement in an else block - // https://eslint.org/docs/rules/no-lonely-if - // 'no-lonely-if': 'error', - // disallow un-paren'd mixes of different operators // https://eslint.org/docs/rules/no-mixed-operators // 'no-mixed-operators': [ 'error', { @@ -222,29 +121,6 @@ module.exports = { // allowSamePrecedence: false // } ], - // disallow use of chained assignment expressions - // https://eslint.org/docs/rules/no-multi-assign - // 'no-multi-assign': [ 'error' ], - - // disallow negated conditions - // https://eslint.org/docs/rules/no-negated-condition - 'no-negated-condition': 'off', - - // disallow nested ternary expressions - // 'no-nested-ternary': 'error', - - // disallow the use of ternary operators - 'no-ternary': 'off', - - // disallow dangling underscores in identifiers - // https://eslint.org/docs/rules/no-underscore-dangle - // 'no-underscore-dangle': [ 'error', { - // allow: [], - // allowAfterThis: false, - // allowAfterSuper: false, - // enforceInMethodNames: true - // } ], - // enforce "same line" or "multiple line" on object properties. // https://eslint.org/docs/rules/object-property-newline // 'object-property-newline': [ 'error', { @@ -255,34 +131,10 @@ module.exports = { // https://eslint.org/docs/rules/operator-linebreak // 'operator-linebreak': [ 'error', 'after', { overrides: { '=': 'none' } } ], - // disallow padding within blocks - // 'padded-blocks': [ 'error', { - // blocks: 'never', - // classes: 'never', - // switches: 'never', - // }, { - // allowSingleLineBlocks: true, - // } ], - - // Require or disallow padding lines between statements - // https://eslint.org/docs/rules/padding-line-between-statements - 'padding-line-between-statements': 'off', - - // Disallow the use of Math.pow in favor of the ** operator - // https://eslint.org/docs/rules/prefer-exponentiation-operator - // TODO: enable, semver-major when eslint 5 is dropped - 'prefer-exponentiation-operator': 'off', - // do not require jsdoc // https://eslint.org/docs/rules/require-jsdoc 'require-jsdoc': 'off', - // requires object keys to be sorted - 'sort-keys': [ 'off', 'asc', { caseSensitive: false, natural: true } ], - - // sort variables within the same declaration block - 'sort-vars': 'off', - // require or disallow a space immediately following the // or /* in a comment // https://eslint.org/docs/rules/spaced-comment // TODO: https://github.com/phetsims/phet-info/issues/150 @@ -300,8 +152,22 @@ module.exports = { // } // } ], - // require regex literals to be wrapped in parentheses - 'wrap-regex': 'off' + /************************************************************** + * Nit Picky rules, we would probably not move these to the primary .eslintrc.js file + *******/ + + // enforce newline at the end of file, with no multiple empty lines + // TODO: add to knit picky rules, https://github.com/phetsims/phet-info/issues/150 + 'eol-last': [ 'error', 'never' ], + + // enforces empty lines around comments + // PhET devs do not want this to be so strict in general + // TODO: add to extra knit-picky rules in the future. https://github.com/phetsims/phet-info/issues/150 + 'lines-around-comment': [ 'error', { beforeLineComment: true } ] + + /******************************** + * End of the Nit Picky rules + *******/ }, env: { browser: true,