{
    "root": true,
    "parser": "@typescript-eslint/parser",
    "plugins": [
        "@typescript-eslint"
    ],
    "env": {
        "node": true
    },
    "extends": [
        "plugin:@typescript-eslint/eslint-recommended"
    ],
    "rules": {
        "brace-style": ["error", "allman"],
        "@typescript-eslint/no-namespace": "off",
        "@typescript-eslint/no-empty-interface": "off",
        "@typescript-eslint/no-explicit-any": "off", // We use a bunch of these.
        "@typescript-eslint/no-unused-vars": "off", // Typescript compiler already checks--Will grey out variable.
        "@typescript-eslint/no-var-requires": "error",
        "@typescript-eslint/explicit-module-boundary-types": ["error", { "allowArgumentsExplicitlyTypedAsAny": true }],
        "@typescript-eslint/naming-convention": ["error", {
            "selector": "default",
            "format": ["camelCase"],
            "leadingUnderscore": "allow"
        }, {
            "selector": "typeLike",
            "format": ["PascalCase"]
        }, {
            "selector": "objectLiteralProperty",
            "format": ["PascalCase", "camelCase", "snake_case"],
            "leadingUnderscore": "allow"
        }, {
            "selector": "typeProperty",
            "format": ["PascalCase", "camelCase"],
            "leadingUnderscore": "allow"
        }, {
            "selector": "enumMember",
            "format": ["UPPER_CASE"]
        }, {
            "selector": "property",
            "modifiers": ["readonly", "static"],
            "format": ["UPPER_CASE"]
        }]
    },
    "overrides": [{
        "files": [
            "src/loaders/**/*.ts"
        ],
        "rules": {
            "@typescript-eslint/no-var-requires": "off"
        }
    }, {
        "files": [
            "**/vitest.config.ts"
        ],
        "rules": {
            "@typescript-eslint/naming-convention": ["error", {
                "selector": "objectLiteralProperty",
                "format": null
            }]
        }
    }]
}