const globals = require('globals'); const js = require('@eslint/js'); const unicorn = require('eslint-plugin-unicorn'); const jsdoc = require('eslint-plugin-jsdoc'); const noUnsanitized = require('eslint-plugin-no-unsanitized'); module.exports = [ { files: ['**/*.js'], ignores: ['src/browser-polyfill.js'], languageOptions: { globals: { ...globals.browser, ...globals.commonjs, ...globals.webextensions, }, }, plugins: { unicorn, jsdoc, 'no-unsanitized': noUnsanitized, }, rules: { // ### ESLint (https://eslint.org/docs/latest/rules/) ...js.configs.recommended.rules, // ### Unicorn (https://github.com/sindresorhus/eslint-plugin-unicorn#rules) ...unicorn.configs.recommended.rules, 'unicorn/no-nested-ternary': 'off', 'unicorn/no-null': 'off', 'unicorn/prefer-module': 'off', 'unicorn/prevent-abbreviations': 'off', // ### JSDoc (https://github.com/gajus/eslint-plugin-jsdoc/tree/main#user-content-eslint-plugin-jsdoc-rules) ...jsdoc.configs['flat/recommended-error'].rules, 'jsdoc/check-indentation': 'error', 'jsdoc/require-asterisk-prefix': 'error', 'jsdoc/require-jsdoc': ['error', { exemptEmptyFunctions: true }], 'jsdoc/require-param-description': 'off', 'jsdoc/require-returns-description': 'off', // ### no-unsanitized (https://github.com/mozilla/eslint-plugin-no-unsanitized#rule-details) ...noUnsanitized.configs.DOM.rules, }, }, ];