// @ts-check
import withNuxt from "./.nuxt/eslint.config.mjs";

export default withNuxt(
  // Your custom configs here
  {
    rules: {
      // Vue 规则
      "vue/multi-word-component-names": "off", // 允许单词组件名
      "vue/no-v-html": "warn", // v-html 使用时警告
      "vue/eqeqeq": "error", // 在模板中强制使用 === 和 !==
      "vue/v-on-event-hyphenation": [
        "error",
        "always",
        {
          autofix: true, // 自动修复连字符
        },
      ], // 事件名使用连字符
      "vue/require-explicit-emits": "error", // 要求显式声明 emits
      "vue/component-name-in-template-casing": ["error", "kebab-case"], // 组件名使用短横线命名
      "vue/no-template-shadow": "error", // 禁止模板变量遮蔽
      "vue/attribute-hyphenation": "error", // 属性名使用连字符
      "vue/html-end-tags": "error", // HTML 标签必须闭合
      "vue/html-indent": ["error", 2], // HTML 缩进 2 个空格
      "vue/max-attributes-per-line": [
        "error",
        {
          singleline: 3, // 单行最多 3 个属性
          multiline: 1, // 多行每行 1 个属性
        },
      ], // 每行最多属性数
      "vue/html-self-closing": [
        "error",
        {
          html: {
            void: "always", // void 元素必须自闭合
            normal: "never", // 非元素不自闭合
            component: "always", // 组件必须自闭合
          },
        },
      ], // 自闭合标签规则
      "vue/singleline-html-element-content-newline": "off", // 允许单行元素内容
      "vue/multiline-html-element-content-newline": "error", // 多行元素内容需要换行

      // JavaScript/TypeScript 规则
      "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", // 生产环境警告 console
      "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", // 生产环境警告 debugger
      "no-unused-vars": ["error", {
        argsIgnorePattern: "^_",
        varsIgnorePattern: "^_",
      }], // 未使用的变量警告
      "prefer-const": "warn", // 优先使用 const
      "no-var": "error", // 禁止使用 var

      // 代码风格
      "semi": ["error", "always"], // 使用分号
      "quotes": ["error", "double", { avoidEscape: true }], // 使用双引号
      "comma-dangle": ["error", "always-multiline"], // 多行时允许尾随逗号
      "arrow-parens": ["error", "as-needed"], // 箭头函数参数括号按需添加
      "object-curly-spacing": ["error", "always"], // 对象大括号内空格
      "array-bracket-spacing": ["error", "never"], // 数组方括号内无空格

      // 最佳实践
      "eqeqeq": ["error", "always"], // 强制使用 === 和 !==
      "no-duplicate-imports": "error", // 禁止重复导入
      "no-else-return": "warn", // if-return 后不允许 else
      "no-nested-ternary": "warn", // 禁止嵌套三元表达式
      "prefer-template": "warn", // 优先使用模板字符串
      "no-useless-concat": "error", // 禁止无意义的字符串拼接
    },
  },
);
