import typescriptEslint from '@typescript-eslint/eslint-plugin'; import unicorn from 'eslint-plugin-unicorn'; import importPlugin from 'eslint-plugin-import'; 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'; import eslintPluginPrettier from 'eslint-plugin-prettier'; 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 [ { ignores: [ '**/node_modules', '**/dist', 'commitlint.config.js', 'eslint.config.mjs', ], }, ...compat.extends( 'eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:unicorn/recommended', 'plugin:import/recommended', 'plugin:import/typescript', 'plugin:prettier/recommended', ), { plugins: { '@typescript-eslint': typescriptEslint, unicorn, importPlugin, eslintPluginPrettier, }, settings: { "import/resolver": { // You will also need to install and configure the TypeScript resolver // See also https://github.com/import-js/eslint-import-resolver-typescript#configuration "typescript": true, "node": true, }, }, languageOptions: { parser: tsParser, ecmaVersion: 'latest', sourceType: 'module', parserOptions: { project: './tsconfig.json', }, }, rules: { 'semi': 'off', '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-unused-vars': [ 'warn', { argsIgnorePattern: '^_', }, ], '@typescript-eslint/explicit-module-boundary-types': 'off', 'unicorn/filename-case': [ 'error', { case: 'kebabCase', }, ], 'unicorn/prevent-abbreviations': [ 'error', { replacements: { props: false, }, }, ], indent: 'off', }, }, ];