import eslint from '@eslint/js' import eslintConfigPrettier from 'eslint-config-prettier' import importX from 'eslint-plugin-import-x' import eslintPluginPrettier from 'eslint-plugin-prettier' import globals from 'globals' export default [ { ignores: ['node_modules/**'], }, eslint.configs.recommended, importX.flatConfigs.recommended, { files: ['**/*.{js,mjs,cjs}'], languageOptions: { globals: { ...globals.node, ...globals.es2021 }, }, rules: { 'no-console': ['error', { allow: ['warn', 'error', 'info'] }], quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: false }], 'max-len': [ 'warn', { code: 120, ignoreStrings: true, ignoreTrailingComments: true, ignoreTemplateLiterals: true, ignoreComments: true, }, ], 'import-x/extensions': 'off', 'import-x/prefer-default-export': 'off', 'import-x/no-extraneous-dependencies': 'off', 'import-x/no-cycle': 'warn', 'import-x/order': [ 'warn', { groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], 'newlines-between': 'never', alphabetize: { order: 'asc', caseInsensitive: true }, }, ], 'no-unused-vars': ['error', { args: 'none' }], 'no-shadow': 'off', 'consistent-return': 'off', 'no-use-before-define': 'error', 'no-empty-function': 'warn', 'class-methods-use-this': 'warn', }, }, { plugins: { prettier: eslintPluginPrettier }, rules: { 'prettier/prettier': ['warn', { endOfLine: 'lf' }] }, }, eslintConfigPrettier, { files: ['eslint.config.js'], rules: { 'import-x/no-unresolved': 'off', 'import-x/no-named-as-default': 'off', 'import-x/no-named-as-default-member': 'off', }, }, ]