const fs = require('fs'); const path = require('path'); const prettierOptions = JSON.parse( fs.readFileSync(path.resolve(__dirname, '.prettierrc'), 'utf8'), ); module.exports = { parser: 'babel-eslint', extends: ['airbnb', 'prettier', 'prettier/react'], plugins: ['prettier', 'redux-saga', 'react', 'react-hooks', 'jsx-a11y'], env: { browser: true, node: true, es6: true, mocha: true, jest: true, jasmine: true, }, parserOptions: { ecmaVersion: 6, sourceType: 'module', ecmaFeatures: { jsx: true, tsx: true, }, }, rules: { 'prettier/prettier': ['error', prettierOptions], 'arrow-body-style': [2, 'as-needed'], 'generator-star-spacing': 0, 'function-paren-newline': 0, 'class-methods-use-this': 0, 'import/imports-first': 0, 'import/newline-after-import': 0, 'import/no-dynamic-require': 0, 'import/no-extraneous-dependencies': 0, 'import/no-named-as-default': 0, 'import/no-unresolved': 2, 'import/no-webpack-loader-syntax': 0, 'import/prefer-default-export': 0, indent: [ 2, 2, { SwitchCase: 1, }, ], 'import/no-cycle': 0, 'no-use-before-define': ['error', { functions: false, classes: true, variables: true }], 'jsx-a11y/aria-props': 2, 'jsx-a11y/heading-has-content': 0, 'jsx-a11y/label-has-associated-control': [ 2, { controlComponents: ['Input'], }, ], // 'jsx-a11y/label-has-for': 0, // 'jsx-a11y/mouse-events-have-key-events': 2, // 'jsx-a11y/role-has-required-aria-props': 2, // 'jsx-a11y/role-supports-aria-props': 2, 'jsx-a11y/no-noninteractive-element-interactions': 0, 'jsx-a11y/click-events-have-key-events': 0, 'jsx-a11y/no-static-element-interactions': 0, 'jsx-a11y/anchor-is-valid': 0, 'max-len': 0, 'newline-per-chained-call': 0, 'no-confusing-arrow': 0, 'no-console': 1, 'no-unused-vars': 1, 'no-use-before-define': 0, 'prefer-template': 2, 'react/jsx-wrap-multilines': 0, 'react/prop-types': 0, 'react/forbid-prop-types': 0, 'react/sort-comp': 1, 'react/jsx-one-expression-per-line': 0, 'react/jsx-props-no-spreading': 0, 'react/state-in-constructor': 0, 'react/static-property-placement': 0, 'react/destructuring-assignment': 0, 'react/no-array-index-key': 'warn', 'react-hooks/rules-of-hooks': 'error', 'react/jsx-closing-tag-location': 0, 'react/forbid-prop-types': 0, 'react/jsx-first-prop-new-line': [2, 'multiline'], 'react/jsx-filename-extension': 0, 'react/jsx-no-target-blank': 0, 'react/jsx-uses-vars': 2, 'react/require-default-props': 0, 'react/require-extension': 0, 'react/self-closing-comp': 0, 'react/sort-comp': 0, 'react/require-default-props': 0, 'react/jsx-fragments': 0, 'redux-saga/no-yield-in-race': 2, 'redux-saga/yield-effects': 2, 'require-yield': 0, 'no-param-reassign': 0, 'prefer-const': 0, 'button-has-type': 0, 'symbol-description':0, }, settings: { 'import/resolver': { webpack: { config: './internals/webpack/webpack.prod.babel.js', }, }, polyfills: ['fetch', 'Promise', 'URL', 'object-assign'], }, };