| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- module.exports = {
- env: {
- browser: true,
- es6: true,
- jest: true,
- },
- extends: [
- 'eslint:recommended',
- 'plugin:react/recommended',
- 'plugin:@typescript-eslint/recommended',
- 'prettier',
- 'prettier/@typescript-eslint',
- ],
- settings: {
- react: {
- version: 'detect',
- },
- },
- globals: {
- JSX: true,
- module: true,
- shallow: true,
- render: true,
- mount: true,
- global: true,
- },
- parser: '@typescript-eslint/parser',
- parserOptions: {
- ecmaFeatures: {
- jsx: true,
- },
- ecmaVersion: 11, // 2020
- sourceType: 'module',
- parserOptions: {
- project: './tsconfig.json',
- },
- },
- plugins: ['@typescript-eslint'],
- rules: {
- // TypeScript Rules
- '@typescript-eslint/no-explicit-any': 0,
- '@typescript-eslint/explicit-function-return-type': [
- 1,
- {
- allowExpressions: true,
- allowTypedFunctionExpressions: true,
- },
- ],
- // JavaScript Rules
- 'arrow-body-style': ['warn', 'as-needed'],
- 'arrow-parens': ['warn', 'as-needed'],
- 'arrow-spacing': 'error',
- 'block-spacing': ['error', 'never'],
- camelcase: ['error', {properties: 'always'}],
- 'comma-dangle': 0,
- 'comma-spacing': ['error', {before: false, after: true}],
- 'comma-style': ['error', 'last'],
- 'global-require': 0,
- indent: ['error', 2],
- 'key-spacing': ['error', {beforeColon: false, afterColon: true}],
- 'keyword-spacing': ['error', {before: true, after: true}],
- 'linebreak-style': ['error', 'unix'],
- 'no-confusing-arrow': ['error', {allowParens: false}],
- 'no-multi-spaces': 'error',
- 'no-shadow': 1,
- 'no-trailing-spaces': 'error',
- 'no-unused-expressions': 1,
- 'no-unused-vars': 1,
- 'no-useless-rename': 'error',
- 'no-whitespace-before-property': 'error',
- 'object-curly-newline': ['error', {consistent: true}],
- 'object-curly-spacing': ['error', 'never'],
- quotes: ['error', 'single'],
- semi: ['error', 'always'],
- 'semi-spacing': ['error', {before: false, after: true}],
- 'space-before-blocks': ['error', 'always'],
- 'space-before-function-paren': [
- 'error',
- {
- anonymous: 'never',
- named: 'never',
- asyncArrow: 'always',
- },
- ],
- 'space-in-parens': ['error', 'never'],
- 'space-infix-ops': ['error', {int32Hint: false}],
- 'space-unary-ops': [2, {words: true, nonwords: false}],
- // React Rules
- 'react/jsx-filename-extension': ['error', {extensions: ['.jsx', '.tsx']}],
- 'react/jsx-indent': [1, 2],
- 'react/jsx-key': 1,
- 'react/jsx-no-comment-textnodes': 1,
- 'react/jsx-no-duplicate-props': 1,
- 'react/jsx-no-target-blank': 2,
- 'react/jsx-props-no-multi-spaces': 1,
- 'react/jsx-sort-props': 1,
- 'react/jsx-tag-spacing': 2,
- 'react/no-children-prop': 1,
- 'react/no-deprecated': 1,
- 'react/no-direct-mutation-state': 2,
- 'react/no-typos': 1,
- 'react/no-unknown-property': 1,
- 'react/prefer-stateless-function': 1,
- 'react/prop-types': 1,
- 'react/react-in-jsx-scope': 2,
- 'react/require-default-props': 1,
- 'react/require-render-return': 1,
- 'react/sort-comp': 1,
- 'react/jsx-wrap-multilines': [
- 1,
- {
- declaration: 'parens-new-line',
- assignment: 'parens-new-line',
- return: 'parens-new-line',
- arrow: 'parens-new-line',
- condition: 'parens-new-line',
- logical: 'parens-new-line',
- prop: 'parens-new-line',
- },
- ],
- },
- };
|