Ctrl K
ComunidadGuías…

web/crux-ui/eslint.config.js

Rama develop · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import path from 'node:path';

import { includeIgnoreFile } from '@eslint/compat';
import js from '@eslint/js';
import { defineConfig } from 'eslint/config';
import { configs, plugins } from 'eslint-config-airbnb-extended';
import { rules as prettierConfigRules, rules } from 'eslint-config-prettier';
import prettierPlugin from 'eslint-plugin-prettier';

const gitignorePath = path.resolve('.', '.gitignore');

const jsConfig = defineConfig([
  // ESLint recommended config
  {
    name: 'js/config',
    ...js.configs.recommended,
  },
  // Stylistic plugin
  plugins.stylistic,
  // Import X plugin
  plugins.importX,
  // Airbnb base recommended config
  ...configs.base.recommended,
]);

const nextConfig = defineConfig([
  // React plugin
  plugins.react,
  // React hooks plugin
  plugins.reactHooks,
  // React JSX A11y plugin
  plugins.reactA11y,
  // Next.js plugin
  plugins.next,
  // Airbnb Next.js recommended config
  ...configs.next.recommended,
]);

const typescriptConfig = defineConfig([
  // TypeScript ESLint plugin
  plugins.typescriptEslint,
  // Airbnb base TypeScript config
  ...configs.base.typescript,
  // Airbnb Next.js TypeScript config
  ...configs.next.typescript,
]);

const prettierConfig = defineConfig([
  // Prettier plugin
  {
    name: 'prettier/plugin/config',
    plugins: {
      prettier: prettierPlugin,
    },
  },
  // Prettier config
  {
    name: 'prettier/config',
    rules: {
      ...prettierConfigRules,
      'prettier/prettier': 'error',
    },
  },
]);

export default defineConfig([
  // Ignore files and folders listed in .gitignore
  includeIgnoreFile(gitignorePath),
  // JavaScript config
  ...jsConfig,
  // Next.js config
  ...nextConfig,
  // TypeScript config
  ...typescriptConfig,
  // Prettier config
  ...prettierConfig,
  {
     rules: {
        'no-console': [
        'error',
        {
            allow: ['error', 'trace', 'info', 'debug', 'warn'],
        },
        ],
        'prettier/prettier': 'error',
        'react-hooks/rules-of-hooks': 'off',
        'react/function-component-definition': 'off',
        'react/prop-types': 'off',
        'react/react-in-jsx-scope': 'off',
        'react/jsx-props-no-spreading': 'off',
        'react/forbid-prop-types': 'off',
        'react/require-default-props': [
        'error',
        {
            ignoreFunctionalComponents: true,
        },
        ],
        'react/no-array-index-key': 'off', //investigate
        'jsx-a11y/click-events-have-key-events': 'off',
        'jsx-a11y/no-static-element-interactions': 'off', //investigate
        'jsx-a11y/anchor-is-valid': 'off', //investigate
        'jsx-a11y/label-has-associated-control': 'off',
        '@typescript-eslint/no-unused-expressions': ['error', { allowTernary: true }],
        '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
        '@typescript-eslint/no-throw-literal': 'off',
        '@typescript-eslint/return-await': 'off',
        '@typescript-eslint/no-floating-promises': 'error',
        '@typescript-eslint/consistent-type-definitions': 'off',
        '@typescript-eslint/only-throw-error': 'off',
        '@typescript-eslint/no-inferrable-types': 'off',
        '@typescript-eslint/no-unnecessary-type-arguments': 'off',
        'no-await-in-loop': 'off',
        'no-nested-ternary': 'off',
        'no-param-reassign': 'off',
        'no-plusplus': 'off',
        'max-classes-per-file': 'off',
        'import/order': 'off',
        'no-restricted-imports': [
        "error",
        {
            "patterns": [
            {
                "group": ["@app/validations/*"],
                "message": "Importing sub-paths from @app/validations results in yup localizations not working. Please import @app/validations instead."
            },
            ],
        },
        ],
        'react/no-unstable-nested-components': [
        'error',
        {
            'allowAsProps': true,
        },
        ],
    },
  },
  {
    files: ['**/e2e/**'],
    rules: {
        'import-x/no-extraneous-dependencies': 'off',
    }
  }
]);