X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/b0c17047a12eca962fa02146e2a3a70b9bcc916e..e838e9528c35de02c88e7089d4294a912997d5fa:/config/eslint.js diff --git a/config/eslint.js b/config/eslint.js index a52b1e63f..b2c527b75 100644 --- a/config/eslint.js +++ b/config/eslint.js @@ -1,11 +1,15 @@ const globals = require("globals"); const js = require("@eslint/js"); +const stylisticJs = require("@stylistic/eslint-plugin-js"); module.exports = [ js.configs.recommended, { + plugins: { + "@stylistic": stylisticJs + }, languageOptions: { - ecmaVersion: 2015, + ecmaVersion: 2021, sourceType: "script", globals: { ...globals.browser, @@ -21,32 +25,57 @@ module.exports = [ } }, rules: { - "accessor-pairs": "error", - "array-bracket-newline": ["error", "consistent"], - "array-bracket-spacing": "error", - "array-callback-return": "error", - "block-scoped-var": "error", - "block-spacing": "error", - "brace-style": ["error", "1tbs", { allowSingleLine: true }], - "comma-dangle": "error", - "comma-spacing": "error", - "comma-style": "error", - "computed-property-spacing": "error", - "curly": ["error", "multi-line", "consistent"], - "dot-location": ["error", "property"], - "dot-notation": "error", - "eol-last": "error", - "eqeqeq": ["error", "smart"], - "func-call-spacing": "error", - "indent": ["error", 2, { + "@stylistic/array-bracket-newline": ["error", "consistent"], + "@stylistic/array-bracket-spacing": "error", + "@stylistic/block-spacing": "error", + "@stylistic/brace-style": ["error", "1tbs", { allowSingleLine: true }], + "@stylistic/comma-dangle": "error", + "@stylistic/comma-spacing": "error", + "@stylistic/comma-style": "error", + "@stylistic/computed-property-spacing": "error", + "@stylistic/dot-location": ["error", "property"], + "@stylistic/eol-last": "error", + "@stylistic/func-call-spacing": "error", + "@stylistic/indent": ["error", 2, { SwitchCase: 1, VariableDeclarator: "first", FunctionDeclaration: { parameters: "first" }, FunctionExpression: { parameters: "first" }, CallExpression: { arguments: "first" } }], - "key-spacing": "error", - "keyword-spacing": "error", + "@stylistic/key-spacing": "error", + "@stylistic/keyword-spacing": "error", + "@stylistic/no-floating-decimal": "error", + "@stylistic/no-mixed-operators": "error", + "@stylistic/no-multiple-empty-lines": "error", + "@stylistic/no-multi-spaces": "error", + "@stylistic/no-trailing-spaces": "error", + "@stylistic/no-whitespace-before-property": "error", + "@stylistic/object-curly-newline": ["error", { consistent: true }], + "@stylistic/object-curly-spacing": ["error", "always"], + "@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }], + "@stylistic/operator-linebreak": ["error", "after"], + "@stylistic/padded-blocks": ["error", "never"], + "@stylistic/quote-props": ["error", "consistent-as-needed", { keywords: true, numbers: true }], + "@stylistic/quotes": ["error", "double"], + "@stylistic/semi": ["error", "always"], + "@stylistic/semi-spacing": "error", + "@stylistic/semi-style": "error", + "@stylistic/space-before-blocks": "error", + "@stylistic/space-before-function-paren": ["error", { named: "never" }], + "@stylistic/space-in-parens": "error", + "@stylistic/space-infix-ops": "error", + "@stylistic/space-unary-ops": "error", + "@stylistic/switch-colon-spacing": "error", + "@stylistic/wrap-iife": "error", + "@stylistic/wrap-regex": "error", + + "accessor-pairs": "error", + "array-callback-return": "error", + "block-scoped-var": "error", + "curly": ["error", "multi-line", "consistent"], + "dot-notation": "error", + "eqeqeq": ["error", "smart"], "no-alert": "warn", "no-array-constructor": "error", "no-caller": "error", @@ -57,7 +86,6 @@ module.exports = [ "no-extend-native": "error", "no-extra-bind": "error", "no-extra-label": "error", - "no-floating-decimal": "error", "no-implicit-coercion": "warn", "no-implicit-globals": "warn", "no-implied-eval": "error", @@ -68,9 +96,6 @@ module.exports = [ "no-lone-blocks": "error", "no-lonely-if": "error", "no-loop-func": "error", - "no-mixed-operators": "error", - "no-multiple-empty-lines": "error", - "no-multi-spaces": "error", "no-multi-str": "error", "no-negated-condition": "error", "no-nested-ternary": "error", @@ -86,7 +111,6 @@ module.exports = [ "no-self-compare": "error", "no-sequences": "error", "no-throw-literal": "error", - "no-trailing-spaces": "error", "no-undef-init": "error", "no-undefined": "error", "no-unmodified-loop-condition": "error", @@ -99,29 +123,22 @@ module.exports = [ "no-use-before-define": ["error", { functions: false }], "no-void": "error", "no-warning-comments": "warn", - "no-whitespace-before-property": "error", - "object-curly-newline": ["error", { consistent: true }], - "object-curly-spacing": ["error", "always"], - "object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }], - "operator-linebreak": ["error", "after"], - "padded-blocks": ["error", "never"], - "quote-props": ["error", "consistent-as-needed", { keywords: true, numbers: true }], - "quotes": ["error", "double"], "radix": ["error", "always"], - "semi": ["error", "always"], - "semi-spacing": "error", - "semi-style": "error", - "space-before-blocks": "error", - "space-before-function-paren": ["error", { named: "never" }], - "space-in-parens": "error", - "space-infix-ops": "error", - "space-unary-ops": "error", - "switch-colon-spacing": "error", - "wrap-iife": "error", - "wrap-regex": "error", "yoda": "error" } }, + { + // Additional configuration for test files + files: ["test/**/*.js"], + languageOptions: { + globals: { + ...globals.mocha, + expect: "readonly", + assert: "readonly", + should: "readonly" + } + } + }, { files: ["config/eslint.js"], languageOptions: {