// ESLint v10 flat config。
// 覆盖范围：src/、test/ 下的 .vue/.ts/.tsx 文件。dist/、node_modules、配置类
// 文件 (vite.config.ts、postcss.config.js 等) 默认走 ignore。
import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import vue from 'eslint-plugin-vue'
import vueParser from 'vue-eslint-parser'

export default [
  {
    ignores: [
      'dist/**',
      'node_modules/**',
      '**/*.d.ts',
      'src/**/*.js',
      'test/**/*.js',
      'vite.config.js',
    ],
  },
  js.configs.recommended,
  ...tseslint.configs.recommended,
  ...vue.configs['flat/recommended'],
  {
    files: ['**/*.vue'],
    languageOptions: {
      parser: vueParser,
      parserOptions: {
        parser: tseslint.parser,
        ecmaVersion: 2022,
        sourceType: 'module',
      },
    },
  },
  {
    files: ['**/*.{ts,tsx,vue}'],
    rules: {
      'vue/multi-word-component-names': 'off',
      // TypeScript/vue-tsc 已经做名字解析；no-undef 在 .vue 内对 DOM 全局
      // (DragEvent / HTMLElement 等) 误报，关掉走 TS 校验。
      'no-undef': 'off',
      '@typescript-eslint/no-unused-vars': [
        'error',
        { argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
      ],
    },
  },
]
