| const OFF = 0; |
| const WARNING = 1; |
| const ERROR = 2; |
| |
| module.exports = { |
| root: true, |
| env: { |
| browser: true, |
| es2021: true, |
| node: true, |
| }, |
| extends: ['airbnb', 'plugin:react/recommended', 'plugin:@typescript-eslint/recommended'], |
| parser: '@typescript-eslint/parser', |
| parserOptions: { |
| ecmaFeatures: { |
| jsx: true, |
| }, |
| ecmaVersion: 'latest', |
| sourceType: 'module', |
| tsconfigRootDir: `${__dirname}/website`, |
| projects: ['./tsconfig.json'], |
| }, |
| plugins: ['react', '@typescript-eslint'], |
| settings: { |
| 'import/resolver': { |
| node: { |
| extensions: ['.js', '.jsx', '.ts', '.tsx', '.svg'], |
| }, |
| }, |
| }, |
| rules: { |
| quotes: [ERROR, 'single', { allowTemplateLiterals: true }], |
| 'no-unused-vars': OFF, |
| '@typescript-eslint/no-unused-vars': [ERROR, { ignoreRestSiblings: true }], |
| '@typescript-eslint/ban-ts-comment': [ERROR, { 'ts-expect-error': 'allow-with-description' }], |
| '@typescript-eslint/consistent-indexed-object-style': [WARNING, 'index-signature'], |
| '@typescript-eslint/consistent-type-imports': [WARNING, { disallowTypeAnnotations: false }], |
| '@typescript-eslint/explicit-module-boundary-types': WARNING, |
| '@typescript-eslint/method-signature-style': ERROR, |
| '@typescript-eslint/no-empty-function': OFF, |
| '@typescript-eslint/no-empty-interface': [ERROR, { allowSingleExtends: true }], |
| '@typescript-eslint/no-inferrable-types': OFF, |
| '@typescript-eslint/no-namespace': [WARNING, { allowDeclarations: true }], |
| 'no-use-before-define': OFF, |
| '@typescript-eslint/no-use-before-define': [ |
| ERROR, |
| { functions: false, classes: false, variables: true }, |
| ], |
| '@typescript-eslint/no-non-null-assertion': OFF, |
| 'no-redeclare': OFF, |
| '@typescript-eslint/no-redeclare': ERROR, |
| 'no-shadow': OFF, |
| '@typescript-eslint/no-shadow': ERROR, |
| 'import/no-unresolved': [ |
| ERROR, |
| { |
| ignore: ['^@theme', '^@docusaurus', '^@generated', '^@site', '^@testing-utils'], |
| }, |
| ], |
| 'no-lonely-if': OFF, |
| 'no-lone-blocks': OFF, |
| 'react/jsx-filename-extension': [ERROR, { extensions: ['.jsx', '.tsx'] }], |
| 'import/extensions': [ERROR, { tsx: 'never', svg: 'always', json: 'never' }], |
| 'import/no-relative-packages': OFF, |
| 'react/jsx-props-no-spreading': OFF, |
| 'react/function-component-definition': [ |
| ERROR, |
| { |
| namedComponents: 'arrow-function', |
| }, |
| ], |
| 'consistent-return': OFF, |
| }, |
| overrides: [ |
| { |
| files: [ |
| 'scripts/**/*.js', |
| 'website/src/clientModules/**/*.js', |
| 'config/**/*.js', |
| '**/*/babel.config.js', |
| '**/*/docusaurus.config.*', |
| 'website/docusaurus.config.js', |
| ], |
| env: { |
| node: true, |
| amd: true, |
| }, |
| rules: { |
| 'global-require': WARNING, |
| 'import/extensions': OFF, |
| 'import/no-extraneous-dependencies': OFF, |
| '@typescript-eslint/no-shadow': OFF, |
| '@typescript-eslint/no-var-requires': OFF, |
| }, |
| }, |
| { |
| files: ['*.yaml', '*.yml'], |
| extends: ['plugin:yml/standard'], |
| parser: 'yaml-eslint-parser', |
| }, |
| ], |
| }; |