{
  "root": true,
  "env": {
    "browser": false,
    "es6": true,
    "node": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:jest/recommended",
    "prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "project": "tsconfig.eslint.json",
    "tsconfigRootDir": "./server",
    "sourceType": "module"
  },
  "plugins": ["@typescript-eslint", "sort-class-members"],
  "rules": {
    "@typescript-eslint/no-explicit-any": "off",
    "@typescript-eslint/no-inferrable-types": "off",
    "@typescript-eslint/no-empty-interface": "off",
    "@typescript-eslint/recommended-requiring-type-checking": "off",
    "@typescript-eslint/no-unused-vars": "warn",
    "lines-between-class-members": [
      "error",
      "always",
      { "exceptAfterSingleLine": true }
    ],

    "sort-class-members/sort-class-members": [
      2,
      {
        "order": [
          "[static-properties]",
          "[static-methods]",
          "[conventional-private-properties]",
          "[properties]",
          "constructor",
          "[methods]",
          "[conventional-private-methods]"
        ],
        "accessorPairPositioning": "getThenSet"
      }
    ]
  },
  "overrides": [
    {
      "files": ["**/*.test.ts"],
      "env": { "jest": true, "node": true }
    }
  ]
}
