{
  "env": {
    "browser": true,
    "es2020": true,
    "commonjs": true,
    "es6": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 11,
    "sourceType": "module"
  },
  "plugins": [
    "@typescript-eslint"
  ],
  "rules": {
    "semi": [
      "error",
      "always"
    ],
    "no-unused-vars": [
      "off"
    ],
    "prefer-const": [
      "warn"
    ],
    "@typescript-eslint/no-unused-vars": [
      "warn"
    ],
    "@typescript-eslint/ban-ts-comment": [
      "warn"
    ],
    "@typescript-eslint/no-namespace": [
      "off"
    ],
    "@typescript-eslint/no-empty-function": [
      "off"
    ],
    "@typescript-eslint/no-empty-interface": [
      "off"
    ],
    "@typescript-eslint/no-var-requires": [
      "warn"
    ],
    "@typescript-eslint/no-explicit-any": [
      "off"
    ],
    "@typescript-eslint/explicit-module-boundary-types": [
      "off"
    ],
    "@typescript-eslint/ban-ts-comment": [
      "off"
    ],
    "eqeqeq": [
      "error",
      "always"
    ],
    "no-var": [
      "error"
    ],
    "no-constant-condition": [
      "error",
      {
        "checkLoops": false
      }
    ],
    "no-useless-return": [
      "error"
    ],
    "array-bracket-spacing": [
      "error",
      "never"
    ],
    "arrow-spacing": [
      "warn"
    ],
    "no-eq-null": [
      "error"
    ],
    "default-case": [
      "error",
      {
        "commentPattern": "^skip\\sdefault"
      }
    ],
    "no-console": [
      "warn"
    ],
    "no-self-assign": [
      "off"
    ]
  },
  "settings": {
    "import/resolver": {
      "node": {
        "moduleDirectory": [
          "scripts/",
          "scripts/node_modules/"
        ],
        "extensions": [
          ".js",
          ".ts"
        ]
      }
    }
  }
}