import {fixupConfigRules, fixupPluginRules} from '@eslint/compat'; import typescriptEslint from '@typescript-eslint/eslint-plugin'; import jest from 'eslint-plugin-jest'; import globals from 'globals'; import tsParser from '@typescript-eslint/parser'; import path from 'node:path'; import {fileURLToPath} from 'node:url'; import js from '@eslint/js'; import {FlatCompat} from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, allConfig: js.configs.all }); export default [ ...fixupConfigRules( compat.extends( 'eslint:recommended', 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:import/typescript', 'plugin:prettier/recommended', 'prettier' ) ), { plugins: { '@typescript-eslint': fixupPluginRules(typescriptEslint), jest }, languageOptions: { globals: { ...globals.node, ...globals.jest }, parser: tsParser, ecmaVersion: 2021, sourceType: 'module' }, settings: { 'import/resolver': { typescript: { alwaysTryTypes: true, project: './tsconfig.json' }, node: { extensions: ['.js', '.ts'] } }, 'import/parsers': { '@typescript-eslint/parser': ['.ts'] } } } ];