X-Git-Url: http://git.squeep.com/?p=squeep-indieauth-helper;a=blobdiff_plain;f=eslint.config.js;fp=eslint.config.js;h=a472cab847ef71f8b2b3a502e3e0467d647d7e6b;hp=0000000000000000000000000000000000000000;hb=9a3674ec0ab8d8d8afe2d75dabf5ef1807db2d8b;hpb=004d338e7c2e4003de6c0baa2552c27221e2be39 diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..a472cab --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,111 @@ +'use strict'; +const globals = require('globals'); +const js = require('@eslint/js'); +const node = require('eslint-plugin-n'); +const security = require('eslint-plugin-security'); +const sonarjs = require('eslint-plugin-sonarjs'); + +const { FlatCompat } = require('@eslint/eslintrc'); +const compat = new FlatCompat(); + +module.exports = [ + js.configs.recommended, + ...compat.config(node.configs.recommended), + security.configs.recommended, + ...compat.config(sonarjs.configs.recommended), + { + files: [ '**/*.js' ], + plugins: { + node, + security, + sonarjs, + }, + languageOptions: { + ecmaVersion: 2023, + sourceType: 'script', + }, + rules: { + 'array-element-newline': [ + 'error', + 'consistent', + ], + 'arrow-parens': [ + 'error', + 'always', + ], + 'arrow-spacing': [ + 'error', + { + 'after': true, + 'before': true, + }, + ], + 'block-scoped-var': 'error', + 'block-spacing': 'error', + 'brace-style': 'error', + 'callback-return': 'error', + 'camelcase': 'error', + 'capitalized-comments': 'warn', + 'class-methods-use-this': 'error', + 'comma-dangle': [ + 'error', + 'always-multiline', + ], + 'comma-spacing': [ + 'error', + { + 'after': true, + 'before': false, + }, + ], + 'comma-style': [ + 'error', + 'last', + ], + 'indent': [ + 'warn', + 2, + { + 'SwitchCase': 1, + }, + ], + 'sonarjs/cognitive-complexity': 'warn', + 'keyword-spacing': 'error', + 'linebreak-style': [ + 'error', + 'unix', + ], + 'no-unused-vars': [ + 'error', { + 'varsIgnorePattern': '^_', + }, + ], + 'object-curly-spacing': [ + 'error', + 'always', + ], + 'prefer-const': 'error', + 'quotes': [ + 'error', + 'single', + ], + 'semi': [ + 'error', + 'always', + ], + 'strict': 'error', + 'vars-on-top': 'error', + }, + }, + { + files: ['test/**'], + languageOptions: { + globals: { + ...globals.mocha, + }, + }, + rules: { + 'n/no-unpublished-require': 'off', + }, + }, +];