{
    "env": {
        "node": true,
        "jest": true
    },
    "extends": [
        "airbnb-typescript/base",
        "plugin:prettier/recommended"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaVersion": 2019,
        "project": "./tsconfig.json"
    },
    "plugins": ["@typescript-eslint", "prettier", "import"],
    "root": true,
    "rules": {
        "@typescript-eslint/no-var-requires": 0,
        "@typescript-eslint/naming-convention": 0,
        "@typescript-eslint/space-before-function-paren": 0,
        "import/prefer-default-export": 0,
        "import/no-unresolved": 0,
        "class-methods-use-this": [0],
        "prettier/prettier": ["error"],
        "func-names": "off",
        "strict": [0, "global"],
        "no-underscore-dangle": "off",
        "no-plusplus": "off",
        "no-param-reassign": "error",
        "no-return-await": "error",
        "max-nested-callbacks": "off",
        "new-cap": [
            "error",
            {
                "capIsNewExceptions": [
                    "Router",
                    "Mitm"
                ]
            }
        ]
    },
    "overrides": [
        {
            // enable the rule specifically for TypeScript files
            "files": ["*.ts", "*.tsx"],
            "rules": {
                "@typescript-eslint/explicit-module-boundary-types": ["error"],
                "@typescript-eslint/naming-convention": ["error"],
                "@typescript-eslint/space-before-function-paren": ["error"]
            }
        },
        {
            "files": ["src/test/e2e/helpers/test-helper.ts"],
            "rules": {
                "import/no-extraneous-dependencies": "off"
            }
        }
    ],
    "ignorePatterns": ["**/docs/api/oas/", "examples/**"]
}