{
    "extends": [
        "eslint:recommended"
    ],
    "ignorePatterns": [
        "docs",
        "tools",
        "dist",
        "test/files/*",
        "benchmarks"
    ],
    "overrides": [
        {
            "files": [
                "**/*.{ts,tsx}"
            ],
            "extends": [
                "plugin:@typescript-eslint/eslint-recommended",
                "plugin:@typescript-eslint/recommended"
            ],
            "plugins": [
                "@typescript-eslint"
            ],
            "rules": {
                "@typescript-eslint/no-explicit-any": "off",
                "@typescript-eslint/ban-types": "off",
                "@typescript-eslint/no-unused-vars": "off",
                "@typescript-eslint/explicit-module-boundary-types": "off"
            }
        }
    ],
    "plugins": [
        "mocha-no-only"
    ],
    "parserOptions": {
        "ecmaVersion": 2020
    },
    "env": {
        "node": true,
        "es6": true
    },
    "rules": {
        "comma-style": "error",
        "indent": [
            "error",
            2,
            {
                "SwitchCase": 1,
                "VariableDeclarator": 2
            }
        ],
        "keyword-spacing": "error",
        "no-whitespace-before-property": "error",
        "no-buffer-constructor": "warn",
        "no-console": "off",
        "no-constant-condition": "off",
        "no-multi-spaces": "error",
        "func-call-spacing": "error",
        "no-trailing-spaces": "error",
        "no-undef": "error",
        "no-unneeded-ternary": "error",
        "no-const-assign": "error",
        "no-useless-rename": "error",
        "no-dupe-keys": "error",
        "space-in-parens": [
            "error",
            "never"
        ],
        "spaced-comment": [
            "error",
            "always",
            {
                "block": {
                    "markers": [
                        "!"
                    ],
                    "balanced": true
                }
            }
        ],
        "key-spacing": [
            "error",
            {
                "beforeColon": false,
                "afterColon": true
            }
        ],
        "comma-spacing": [
            "error",
            {
                "before": false,
                "after": true
            }
        ],
        "array-bracket-spacing": 1,
        "arrow-spacing": [
            "error",
            {
                "before": true,
                "after": true
            }
        ],
        "object-curly-spacing": [
            "error",
            "always"
        ],
        "comma-dangle": [
            "error",
            "never"
        ],
        "no-unreachable": "error",
        "quotes": [
            "error",
            "single"
        ],
        "quote-props": [
            "error",
            "as-needed"
        ],
        "semi": "error",
        "no-extra-semi": "error",
        "semi-spacing": "error",
        "no-spaced-func": "error",
        "no-throw-literal": "error",
        "space-before-blocks": "error",
        "space-before-function-paren": [
            "error",
            "never"
        ],
        "space-infix-ops": "error",
        "space-unary-ops": "error",
        "no-var": "warn",
        "prefer-const": "warn",
        "strict": [
            "error",
            "global"
        ],
        "no-restricted-globals": [
            "error",
            {
                "name": "context",
                "message": "Don't use Mocha's global context"
            }
        ],
        "no-prototype-builtins": "off",
        "mocha-no-only/mocha-no-only": [
            "error"
        ]
    }
}
