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': '