{
    "extends": [
        "airbnb",
        "airbnb/hooks",
        "plugin:compat/recommended",
    ],
    "parser": "babel-eslint",
    "env": {
        "browser": true,
        "commonjs": false,
        "es6": true,
        "mocha": true,
        "node": true,
        "shared-node-browser": true,
        "webextensions": true,
        "worker": true
    },
    "globals": {},
    "rules": {
        "arrow-parens": [
            "error",
            "as-needed",
            { "requireForBlockBody": true }
        ],
        "max-classes-per-file": "off",
        "jsx-a11y/control-has-associated-label": "off",
        "jsx-a11y/mouse-events-have-key-events": "off",
        "jsx-a11y/click-events-have-key-events": "off",
        "jsx-a11y/label-has-for": "off",
        "jsx-a11y/label-has-associated-control": [
            "error",
            {
                "controlComponents": [
                    "RadioInput",
                    "TextInput"
                ],
                "required": {
                    "some": [
                        "nesting",
                        "id"
                    ]
                }
            }
        ],
        "implicit-arrow-linebreak": "off",
        "prefer-destructuring": "off",
        "object-curly-newline": [
            "error",
            {
                "consistent": true
            }],
        "no-control-regex": "off",
        "compat/compat": "error",
        "import/extensions": "off",
        "class-methods-use-this": "off",
        "no-restricted-syntax": [
            "error",
            "ForInStatement",
            "LabeledStatement",
            "WithStatement"
        ],
        "comma-dangle": ["error", {
            "arrays": "only-multiline",
            "objects": "only-multiline",
            "imports": "always-multiline",
            "functions": "ignore"
        }],
        "react/require-default-props": "off",
        "react/prop-types": "off",
        "react/destructuring-assignment": "off",

        "no-underscore-dangle": "off",
        "import/no-unresolved": "off",
        "no-restricted-globals": ["error", "Worker"],
        "react/sort-comp": "off",
        "react/forbid-prop-types": "off",
        "react/jsx-fragments": "off",
        "react/jsx-props-no-spreading": "off",
        "react/state-in-constructor": "off",
        "react/jsx-curly-newline": "off",
        "react/jsx-one-expression-per-line": "off"
    },
    "overrides": [
        {
            files: ["**/*.ts", "**/*.tsx"],
            "extends": [
                "airbnb",
                "airbnb/hooks",
                "plugin:compat/recommended",
                "plugin:@typescript-eslint/recommended",
                "plugin:@typescript-eslint/recommended-requiring-type-checking"
            ],
            parser: "@typescript-eslint/parser",
            plugins: ["@typescript-eslint"],
            rules: {
                "lines-between-class-members": "off",
                "react/jsx-filename-extension": "off",
                "react/prop-types": "off"
            }
        },
        {
            "files": [
                "modules/mobile-cards/**/*.*"
            ],
            "rules" : {
                "jsx-a11y/anchor-is-valid": "off"
            }
        },
        {
            "files": [
                "modules/**/tests/**/*.*",
                "modules/**/*tests.bundle.*",
                "modules/**/*helpers.*",
                "fern.js",
                "fern/**/*.js"
            ],
            "rules": {
                "import/no-extraneous-dependencies": "off",
                "func-names": ["error", "never"],
                "prefer-arrow-callback": "off",
                "no-unused-expressions": "off",
                "object-shorthand": "off",
                "no-console": "off"
            }
        },
        {
            "files": [
                "fern/commands/*.*",
                "broccoli/**/*.*"
            ],
            "rules": {
                "import/no-extraneous-dependencies": "off",
                "global-require": "off",
                "import/no-dynamic-require": "off",
                "strict": "off",
                "no-console": "off"
            }
        }
    ]
}
