module.exports = {
    "env": {
        "browser": true,
        "es2021": true
    },
    "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaVersion": 12,
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint"
    ],
    "rules": {
          // 代码风格
    "camelcase": "error", // 驼峰
    // 减少低级错误
    "for-direction": "error", // 强制 “for” 循环中更新子句的计数器朝着正确的方向移动
    "no-cond-assign": "error", // 禁止条件表达式中出现赋值操作符
    "no-dupe-args": "error", // 禁止 function 定义中出现重名参数
    "no-dupe-keys": "error", // 禁止对象字面量中出现重复的 key
    "no-duplicate-case": "error", // 禁止出现重复的 case 标签
    "no-empty": "error", // 禁止出现空语句块
    "no-sparse-arrays": "error", // 禁用稀疏数组
    "no-unreachable": "error", // 禁止在 return、throw、continue 和 break 语句之后出现不可达代码
    // 提高代码质量
    "array-callback-return": "error", // 强制数组的某些需要返回值的回调函数中有 return 语句。
    "block-scoped-var": "error", // 强制把变量的使用限制在其定义的作用域范围内
    "default-case": "error", // 要求 switch 语句中有 default 分支
    "no-empty-function": "error", // 禁止出现空函数
    "no-fallthrough": "error", // 禁止 case 贯穿。
    "no-labels": "error", // 禁用标签语句
    "no-redeclare": "error", // 禁止多次声明同一变量
    "no-return-assign": ["error", "always"], // 禁止在返回语句中赋值
    "no-sequences": "error", // 不允许使用逗号操作符
    "no-useless-concat": "warn", // 禁止不必要的字符串字面量或模板字面量的连接,
    "no-eval": "error", // 禁用 eval()
   
    "no-use-before-define": ["error", {
        "functions": false
    }], // 禁止在变量定义之前使用它们
    "complexity": ["error", {
        "max": 10
    }], // 程序中允许的最大环路复杂度
    "consistent-return": "error", // 要求 return 语句要么总是指定返回的值，要么不指定
    "max-depth": ["error", 5], // 强制块语句的最大可嵌套深度
    "max-lines-per-function": ["warn", 50], // 强制函数最大行数
    "max-params": ["warn", 4], // 限制函数定义中最大参数个数
    "require-await": "error", // 禁止使用不带 await 表达式的 async 函数
    // es6
    "no-var": "warn", // 要求使用 let 或 const 而不是 var
    "no-duplicate-imports": "warn", // 禁止重复模块导入
    "prefer-destructuring": "warn", // 优先使用数组和对象解构
    "prefer-template": "warn", // 要求使用模板字面量而非字符串连接

    "no-unused-vars": "off",// 禁止出现未使用过的变量
    "@typescript-eslint/no-unused-vars": [
        "error",
        { "argsIgnorePattern": "^_" }
    ]
    }
};
