1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- module.exports = {
- env: {
- browser: true,
- node: true,
- es6: true,
- jest: true,
- },
- parser: '@typescript-eslint/parser',
- extends: [
- 'plugin:jest-dom/recommended',
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:react/recommended',
- 'plugin:react-hooks/recommended',
- 'plugin:react/jsx-runtime',
- // turns off the rules which may conflict with prettier
- 'prettier',
- ],
- plugins: ['@emotion', '@typescript-eslint', 'unused-imports'],
- settings: {
- react: {
- version: 'detect',
- },
- },
- rules: {
- // force using Logger object
- 'no-console': ['warn'],
- 'no-duplicate-imports': ['warn'],
- // taken care of by typescript
- 'react/prop-types': 'off',
- // disallow default React import, force destructuring instead
- 'no-restricted-syntax': [
- 'error',
- {
- selector: "ImportDeclaration[source.value='react'][specifiers.0.type='ImportDefaultSpecifier']",
- message: 'Default React import not allowed',
- },
- ],
- 'react/jsx-curly-brace-presence': ['warn', { props: 'never', children: 'never' }],
- 'react/self-closing-comp': [
- 'warn',
- {
- 'component': true,
- 'html': true,
- },
- ],
- // add exhaustive deps check to custom hooks
- 'react-hooks/exhaustive-deps': [
- 'warn',
- {
- 'additionalHooks': 'useDeepMemo',
- },
- ],
- 'react/no-unescaped-entities': 'off',
- // disable explicit return types
- '@typescript-eslint/explicit-module-boundary-types': 'off',
- // use plugin for fixing unused imports
- '@typescript-eslint/no-unused-vars': 'off',
- 'unused-imports/no-unused-imports': 'error',
- // allow "_" prefixed function arguments
- 'unused-imports/no-unused-vars': [
- 'warn',
- { 'args': 'after-used', 'argsIgnorePattern': '^_', 'ignoreRestSiblings': true, 'varsIgnorePattern': '^_+$' },
- ],
- '@typescript-eslint/no-empty-function': 'warn',
- '@typescript-eslint/class-name-casing': 'off',
- '@typescript-eslint/ban-ts-comment': [
- 'error',
- {
- 'ts-ignore': 'allow-with-description',
- },
- ],
- '@typescript-eslint/ban-types': [
- 'error',
- {
- types: {
- object: false,
- },
- },
- ],
- // make sure we use the proper Emotion imports
- '@emotion/pkg-renaming': 'error',
- '@emotion/no-vanilla': 'error',
- '@emotion/syntax-preference': [2, 'string'],
- },
- }
|