// ESLint 9 flat config
// 项目级配置：TypeScript + NestJS + Next.js + 设计令牌规则
const js = require('@eslint/js');
const tseslint = require('typescript-eslint');
const prettierConfig = require('eslint-config-prettier');

module.exports = tseslint.config(
  // 全局忽略
  {
    ignores: [
      '**/dist/**',
      '**/node_modules/**',
      '**/.next/**',
      '**/coverage/**',
      '**/*.config.js',
      '**/*.config.mjs',
      'scripts/arch-scan/**',
    ],
  },

  // 基础 JS 规则
  js.configs.recommended,

  // TypeScript 规则
  ...tseslint.configs.recommended,

  // 项目级自定义规则
  {
    languageOptions: {
      ecmaVersion: 2024,
      sourceType: 'module',
    },
    rules: {
      // 禁止 any（未知类型用 unknown）
      '@typescript-eslint/no-explicit-any': 'warn',
      // 未使用变量允许下划线前缀
      '@typescript-eslint/no-unused-vars': [
        'error',
        {
          argsIgnorePattern: '^_',
          varsIgnorePattern: '^_',
        },
      ],
      // 允许 console（开发环境）
      'no-console': 'off',
    },
  },

  // 测试文件放宽规则
  {
    files: ['**/*.test.ts', '**/*.spec.ts', '**/test/**'],
    rules: {
      '@typescript-eslint/no-explicit-any': 'off',
      '@typescript-eslint/no-non-null-assertion': 'off',
    },
  },

  // 禁用与 Prettier 冲突的规则
  prettierConfig,
);
