{
    "extends": "zardoy",
    "ignorePatterns": [
        "!*.js",
        "prismarine-viewer/"
    ],
    "rules": {
        "space-infix-ops": "error",
        "no-multi-spaces": "error",
        "space-before-function-paren": "error",
        "space-in-parens": [
            "error",
            "never"
        ],
        "object-curly-spacing": [
            "error",
            "always"
        ],
        "comma-spacing": "error",
        "semi": [
            "error",
            "never"
        ],
        "comma-dangle": [
            "error",
            // todo maybe "always-multiline"?
            "only-multiline"
        ],
        "indent": [
            "error",
            2,
            {
                "SwitchCase": 1,
                "ignoredNodes": [
                    "TemplateLiteral"
                ]
            }
        ],
        "quotes": [
            "error",
            "single",
            {
                "allowTemplateLiterals": true
            }
        ],
        // perf
        "import/no-deprecated": "off",
        // ---
        "@typescript-eslint/prefer-nullish-coalescing": "off",
        "@typescript-eslint/naming-convention": "off",
        "prefer-template": "off",
        // intentional: improve readability in some cases
        "no-else-return": "off",
        "@typescript-eslint/padding-line-between-statements": "off",
        "arrow-body-style": "off",
        "unicorn/prefer-ternary": "off",
        "unicorn/switch-case-braces": "off",
        "@typescript-eslint/consistent-type-definitions": "off",
        "unicorn/explicit-length-check": "off",
        "unicorn/prefer-dom-node-append": "off",
        "typescript-eslint/no-confusing-void-expression": "off",
        "unicorn/no-lonely-if": "off",
        "no-multi-assign": "off",
        "sonarjs/no-duplicate-string": "off",
        "new-cap": "off",
        "unicorn/consistent-destructuring": "off",
        "unicorn/no-await-expression-member": "off",
        "unicorn/prefer-add-event-listener": "off",
        "unicorn/prefer-top-level-await": "off",
        "default-case": "off",
        // I guess it would better to fix
        "node/prefer-global/buffer": "off",
        "unicorn/prefer-optional-catch-binding": "off", // still useful for debugging
        "no-alert": "off", // todo once replaced with ui, enable
        "@typescript-eslint/restrict-plus-operands": "off",
        // ---
        "@typescript-eslint/no-throw-literal": "off", // disabling because of "rule expansion"
        "no-empty-function": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "import/no-extraneous-dependencies": "off",
        "@typescript-eslint/ban-types": "off",
        "unicorn/prefer-query-selector": "off",
        "@typescript-eslint/dot-notation": "off", // trick prop type-checking
        "@typescript-eslint/consistent-type-imports": "off",
        "no-negated-condition": "off",
        "@typescript-eslint/no-require-imports": "off",
        "unicorn/prefer-number-properties": "off",
        "@typescript-eslint/no-confusing-void-expression": "off",
        "unicorn/no-empty-file": "off",
        "unicorn/prefer-event-target": "off",
        // needs to be fixed actually
        "complexity": "off",
        "@typescript-eslint/no-floating-promises": "warn",
        "no-async-promise-executor": "off",
        "no-bitwise": "off",
        "unicorn/filename-case": "off",
        "max-depth": "off"
    },
    "root": true
}
