module.exports = {
  env: {
    node: true,
    browser: true,
    es2021: true,
  },
  globals: {
    describe: true,
    it: true,
    expect: true,
    beforeEach: true,
  },
  extends: [
    'eslint-config-tencent',
    'eslint-config-tencent/ts',
    'plugin:vue/vue3-essential',
    './prettier.cjs',
  ],
  parser: 'vue-eslint-parser',
  parserOptions: {
    ecmaVersion: 12,
    parser: '@typescript-eslint/parser',
    extraFileExtensions: ['.vue'],
    sourceType: 'module',
  },
  plugins: [
    'vue',
    '@typescript-eslint',
    'simple-import-sort'
  ],
  ignorePatterns: ['.eslintrc.cjs'],
  rules: {
    'vue/no-mutating-props': 'off',
    'vue/multi-word-component-names': 'off',
    'no-param-reassign': 'off',
    '@typescript-eslint/naming-convention': 'off',
    '@typescript-eslint/no-require-imports': 'off',
    "@typescript-eslint/no-misused-promises": [
      "error",
      {
        "checksVoidReturn": false
      }
    ],
    'simple-import-sort/imports': [
      "error", {
        groups: [
          ['./polyfills'],
          // Node.js builtins. You could also generate this regex if you use a `.js` config.
          // For example: `^(${require("module").builtinModules.join("|")})(/|$)`
          [
            "^(assert|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|https|module|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|tty|url|util|vm|zlib|freelist|v8|process|async_hooks|http2|perf_hooks)(/.*|$)",
          ],
          // Packages. `react|vue` related packages come first.
          ["^(react|vue|vite)", "^@?\\w"],
          ["^(@tmagic)(/.*|$)"],
          // Internal packages.
          ["^(@|@editor|@data-source)(/.*|$)"],
          // Side effect imports.
          ["^\\u0000"],
          // Parent imports. Put `..` last.
          ["^\\.\\.(?!/?$)", "^\\.\\./?$"],
          // Other relative imports. Put same-folder imports and `.` last.
          ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
          // Style imports.
          ["^.+\\.s?css$"],
        ],
      }
    ]
  },
};
