{
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "./tsconfig.json"
    },
    "plugins": ["@typescript-eslint", "filenames", "github", "import", "no-async-foreach"],
    "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended",
        "plugin:@typescript-eslint/recommended-requiring-type-checking",
        "plugin:github/recommended",
        "plugin:github/typescript",
        "plugin:import/typescript"
    ],
    "rules": {
        "filenames/match-regex": ["error", "^[a-z0-9-]+(\\.test)?$"],
        "i18n-text/no-en": "off",
        "import/extensions": "error",
        "import/no-amd": "error",
        "import/no-commonjs": "error",
        "import/no-dynamic-require": "error",
        // Disable the rule that checks that devDependencies aren't imported since we use a single
        // linting configuration file for both source and test code.
        "import/no-extraneous-dependencies": ["error", {"devDependencies": true}],
        "import/no-namespace": "off",
        "import/no-unresolved": "error",
        "import/no-webpack-loader-syntax": "error",
        "import/order": ["error", {
            "alphabetize": {"order": "asc"},
            "newlines-between": "always"
        }],
        "no-async-foreach/no-async-foreach": "error",
        "no-console": "off",
        "no-sequences": "error",
        "no-shadow": "off",
        "@typescript-eslint/no-shadow": ["error"],
        "one-var": ["error", "never"]
    },
    "overrides": [{
        // "temporarily downgraded during transition to eslint
        "files": "**",
        "rules": {
            "@typescript-eslint/ban-types": "off",
            "@typescript-eslint/explicit-module-boundary-types": "off",
            "@typescript-eslint/no-explicit-any": "off",
            "@typescript-eslint/no-unsafe-assignment": "off",
            "@typescript-eslint/no-unsafe-call": "off",
            "@typescript-eslint/no-unsafe-member-access": "off",
            "@typescript-eslint/no-unsafe-return": "off",
            "@typescript-eslint/no-var-requires": "off",
            "@typescript-eslint/prefer-regexp-exec": "off",
            "@typescript-eslint/require-await": "off",
            "@typescript-eslint/restrict-template-expressions": "off",
            "func-style": "off",
            "sort-imports": "off"
        }
    }]
}