152 lines
4.4 KiB
YAML
152 lines
4.4 KiB
YAML
env:
|
|
browser: true
|
|
jquery: true
|
|
node: true
|
|
es6: true
|
|
|
|
globals:
|
|
angular: true
|
|
|
|
extends:
|
|
- 'eslint:recommended'
|
|
- 'plugin:storybook/recommended'
|
|
- 'plugin:import/typescript'
|
|
- prettier
|
|
|
|
plugins:
|
|
- import
|
|
|
|
parserOptions:
|
|
ecmaVersion: 2018
|
|
sourceType: module
|
|
project: './tsconfig.json'
|
|
ecmaFeatures:
|
|
modules: true
|
|
|
|
rules:
|
|
no-console: error
|
|
no-alert: error
|
|
no-control-regex: 'off'
|
|
no-empty: warn
|
|
no-empty-function: warn
|
|
no-useless-escape: 'off'
|
|
import/named: error
|
|
import/order:
|
|
[
|
|
'error',
|
|
{
|
|
pathGroups:
|
|
[
|
|
{ pattern: '@@/**', group: 'internal', position: 'after' },
|
|
{ pattern: '@/**', group: 'internal' },
|
|
{ pattern: '{Kubernetes,Portainer,Agent,Azure,Docker}/**', group: 'internal' },
|
|
],
|
|
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
|
|
pathGroupsExcludedImportTypes: ['internal'],
|
|
},
|
|
]
|
|
no-restricted-imports:
|
|
- error
|
|
- patterns:
|
|
- group:
|
|
- '@/react/test-utils/*'
|
|
message: 'These utils are just for test files'
|
|
|
|
settings:
|
|
'import/resolver':
|
|
alias:
|
|
map:
|
|
- ['@@', './app/react/components']
|
|
- ['@', './app']
|
|
extensions: ['.js', '.ts', '.tsx']
|
|
typescript: true
|
|
node: true
|
|
|
|
overrides:
|
|
- files:
|
|
- app/**/*.ts{,x}
|
|
parserOptions:
|
|
project: './tsconfig.json'
|
|
parser: '@typescript-eslint/parser'
|
|
plugins:
|
|
- '@typescript-eslint'
|
|
- 'regex'
|
|
extends:
|
|
- airbnb
|
|
- airbnb-typescript
|
|
- 'plugin:eslint-comments/recommended'
|
|
- 'plugin:react-hooks/recommended'
|
|
- 'plugin:react/jsx-runtime'
|
|
- 'plugin:@typescript-eslint/recommended'
|
|
- 'plugin:@typescript-eslint/eslint-recommended'
|
|
- 'plugin:promise/recommended'
|
|
- 'plugin:storybook/recommended'
|
|
- prettier # should be last
|
|
settings:
|
|
react:
|
|
version: 'detect'
|
|
|
|
rules:
|
|
no-console: error
|
|
import/order:
|
|
[
|
|
'error',
|
|
{
|
|
pathGroups: [{ pattern: '@@/**', group: 'internal', position: 'after' }, { pattern: '@/**', group: 'internal' }],
|
|
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],
|
|
'newlines-between': 'always',
|
|
},
|
|
]
|
|
no-plusplus: off
|
|
func-style: [error, 'declaration']
|
|
import/prefer-default-export: off
|
|
no-use-before-define: 'off'
|
|
'@typescript-eslint/no-use-before-define': ['error', { functions: false, 'allowNamedExports': true }]
|
|
no-shadow: 'off'
|
|
'@typescript-eslint/no-shadow': off
|
|
jsx-a11y/no-autofocus: warn
|
|
react/forbid-prop-types: off
|
|
react/require-default-props: off
|
|
react/no-array-index-key: off
|
|
no-underscore-dangle: off
|
|
react/jsx-filename-extension: [0]
|
|
import/no-extraneous-dependencies: ['error', { devDependencies: true }]
|
|
'@typescript-eslint/explicit-module-boundary-types': off
|
|
'@typescript-eslint/no-unused-vars': 'error'
|
|
'@typescript-eslint/no-explicit-any': 'error'
|
|
'jsx-a11y/label-has-associated-control': ['error', { 'assert': 'either', controlComponents: ['Input', 'Checkbox'] }]
|
|
'react/function-component-definition': ['error', { 'namedComponents': 'function-declaration' }]
|
|
'react/jsx-no-bind': off
|
|
'no-await-in-loop': 'off'
|
|
'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }]
|
|
'regex/invalid': ['error', [{ 'regex': '<Icon icon="(.*)"', 'message': 'Please directly import the `lucide-react` icon instead of using the string' }]]
|
|
'@typescript-eslint/no-restricted-imports':
|
|
- error
|
|
- patterns:
|
|
- group:
|
|
- '@/react/test-utils/*'
|
|
message: 'These utils are just for test files'
|
|
overrides: # allow props spreading for hoc files
|
|
- files:
|
|
- app/**/with*.ts{,x}
|
|
rules:
|
|
'react/jsx-props-no-spreading': off
|
|
- files:
|
|
- app/**/*.test.*
|
|
extends:
|
|
- 'plugin:vitest/recommended'
|
|
env:
|
|
'vitest/env': true
|
|
rules:
|
|
'react/jsx-no-constructed-context-values': off
|
|
'@typescript-eslint/no-restricted-imports': off
|
|
no-restricted-imports: off
|
|
'react/jsx-props-no-spreading': off
|
|
- files:
|
|
- app/**/*.stories.*
|
|
rules:
|
|
'no-alert': off
|
|
'@typescript-eslint/no-restricted-imports': off
|
|
no-restricted-imports: off
|
|
'react/jsx-props-no-spreading': off
|