{
  "root": true,
  "ignorePatterns": ["projects/**/*"],
  "overrides": [
    {
      "files": ["*.ts"],
      "parser": "@typescript-eslint/parser",
      "parserOptions": {
        "ecmaVersion": 2020,
        "sourceType": "module",
        "project": ["tsconfig.json", "tsconfig.spec.json", "e2e/tsconfig.e2e.json"],
        "createDefaultProgram": true
      },
      "extends": [
        "plugin:@typescript-eslint/recommended",
        "plugin:@angular-eslint/recommended",
        "plugin:@angular-eslint/template/process-inline-templates",
        "plugin:jsdoc/recommended",
        "plugin:unicorn/recommended",
        "prettier"
      ],
      "plugins": ["eslint-plugin-unicorn", "eslint-plugin-jsdoc"],
      "settings": {
        "jsdoc": {
          "mode": "typescript"
        }
      },
      "rules": {
        "unicorn/filename-case": "error",
        "unicorn/no-array-reduce": "off",
        "unicorn/no-array-callback-reference": "off",
        "unicorn/no-await-expression-member": "off",
        "unicorn/prefer-object-from-entries": "off",
        "unicorn/prefer-node-protocol": "off",
        "unicorn/no-process-exit": "off",
        "unicorn/prevent-abbreviations": [
          "warn",
          {
            "replacements": {
              "ref": false,
              "i": false
            }
          }
        ],
        "unicorn/no-nested-ternary": "off",
        "unicorn/better-regex": "off",
        "unicorn/no-non-null-assertion": "off",
        "jsdoc/no-types": "error",
        "jsdoc/require-param": "off",
        "jsdoc/require-param-description": "error",
        "jsdoc/check-param-names": "error",
        "jsdoc/require-returns": "off",
        "jsdoc/require-param-type": "off",
        "jsdoc/require-returns-type": "off",
        "@typescript-eslint/explicit-module-boundary-types": "off",
        "@typescript-eslint/no-unused-vars": [
          "error",
          {
            "args": "after-used",
            "argsIgnorePattern": "^_"
          }
        ],
        "@typescript-eslint/lines-between-class-members": ["error", "always"],
        "@typescript-eslint/no-explicit-any": "error",
        "@angular-eslint/use-lifecycle-interface": "error"
      }
    },
    {
      "files": ["*.html"],
      "extends": ["plugin:@angular-eslint/template/recommended", "prettier"]
    }
  ]
}
