{
  "$schema": "https://json.schemastore.org/eslintrc",
  "rules": {
    "@typescript-eslint/consistent-type-definitions": "error",
    "@typescript-eslint/indent": "off",
    "@typescript-eslint/no-explicit-any": "error",
    "@typescript-eslint/quotes": [
      "error",
      "single",
      {
        "avoidEscape": true
      }
    ],
    "@typescript-eslint/semi": [
      "error",
      "always"
    ],
    "@typescript-eslint/type-annotation-spacing": "error",
    "arrow-body-style": [
      "error",
      "as-needed"
    ],
    "arrow-parens": [
      "error",
      "as-needed"
    ],
    "camelcase": "off",
    "comma-dangle": "off",
    "curly": "error",
    "eol-last": "error",
    "eqeqeq": [
      "error",
      "smart"
    ],
    "guard-for-in": "error",
    "id-blacklist": "off",
    "id-denylist": [
      "error",
      "await"
    ],
    "id-match": "off",
    "max-len": [
      "error",
      {
        "code": 180
      }
    ],
    "no-duplicate-imports": "error",
    "no-magic-numbers": "off",
    "no-multiple-empty-lines": [
      "error",
      {
        "max": 1
      }
    ],
    "no-new-wrappers": "error",
    "no-null/no-null": "error",
    "no-shadow": "off",
    "no-shadow-restricted-names": "error",
    "@typescript-eslint/no-shadow": [
      "error",
      {
        "hoist": "all"
      }
    ],
    "no-tabs": "error",
    "no-throw-literal": "error",
    "no-trailing-spaces": "error",
    "no-underscore-dangle": "off",
    "no-unreachable": "error",
    "no-unused-expressions": "error",
    "no-var": "error",
    "no-void": "error",
    "one-var": [
      "error",
      "never"
    ],
    "prefer-const": [
      "error",
      {
        "destructuring": "all"
      }
    ],
    "radix": "off",
    "space-before-function-paren": [
      "error",
      {
        "anonymous": "always",
        "named": "never",
        "asyncArrow": "always"
      }
    ],
    "spaced-comment": [
      "error",
      "always",
      {
        "exceptions": [
          "*",
          "+",
          "-",
          "/"
        ]
      }
    ],
    "@typescript-eslint/tslint/config": [
      "error",
      {
        "rules": {
          "file-header": [
            true,
            {
              "allow-single-line-comments": true,
              "match": "SPDX-License-Identifier: EPL-2\\.0 OR GPL-2\\.0-only WITH Classpath-exception-2\\.0"
            }
          ],
          "jsdoc-format": [
            true,
            "check-multiline-start"
          ],
          "one-line": [
            true,
            "check-open-brace",
            "check-catch",
            "check-else",
            "check-whitespace"
          ],
          "typedef": [
            true,
            "call-signature",
            "property-declaration"
          ],
          "whitespace": [
            true,
            "check-branch",
            "check-decl",
            "check-operator",
            "check-separator",
            "check-type"
          ]
        }
      }
    ],
    "@theia/annotation-check": "error",
    "@theia/localization-check": "error",
    "@theia/no-src-import": "error",
    "@theia/runtime-import-check": "error",
    "@theia/shared-dependencies": "error",
    "import/no-extraneous-dependencies": "error",
    "import/no-dynamic-require": "error",
    "no-restricted-imports": [
      "error",
      ".",
      "./",
      "..",
      "../"
    ]
  },
  "overrides": [
    {
      "files": [
        "**/*.{spec,espec,slow-spec}.{js,ts,tsx}"
      ],
      "rules": {
        "@theia/runtime-import-check": "off",
        "@theia/shared-dependencies": "off",
        "import/no-extraneous-dependencies": "off",
        "no-unused-expressions": "off"
      }
    },
    {
      "files": [
        "**/electron-{node,main}/**"
      ],
      "rules": {
        "import/no-dynamic-require": "off"
      }
    }
  ]
}
