{
  "root": true,
  "extends": [
    "standard",
    "plugin:react/recommended"
  ],
  "rules": {
    "semi": ["error", "always"],
    "no-use-before-define": "off",
    "no-case-declarations": "off"
  },
  "globals": {
    "Application": true,
    "angular": true,
    "Fablab": true,
    "moment": true,
    "_": true,
    "Humanize": true,
    "GTM": true,
    "$": true,
    "KeyboardEvent": true
  },
  "plugins": ["html-erb", "fabmanager"],
  "overrides": [
    {
      "files": ["**/*.ts", "**/*.tsx"],
      "env": { "browser": true, "es6": true },
      "extends": [
        "plugin:react/recommended",
        "plugin:@typescript-eslint/eslint-recommended",
        "plugin:@typescript-eslint/recommended"
      ],
      "parser": "@typescript-eslint/parser",
      "parserOptions": {
        "ecmaFeatures": { "jsx": true },
        "ecmaVersion": 2018,
        "sourceType": "module",
        "project": "./tsconfig.json"
      },
      "plugins": ["@typescript-eslint", "react"],
      "rules": {
        "react/prop-types": "off",
        "react/jsx-uses-react": "off",
        "react/react-in-jsx-scope": "off"
      }
    },
    {
      "files": ["app/frontend/src/javascript/components/**/*.tsx"],
      "rules": {
        "import/no-default-export": "error",
        "import/no-unused-modules": "error",
        "fabmanager/component-class-named-as-component": ["error", { "ignoreAbstractKeyword": true }],
        "fabmanager/component-named-like-file": "error",
        "fabmanager/component-documentation": "warn",
        "fabmanager/component-methods-documentation": "warn",
        "fabmanager/no-bootstrap": "error",
        "fabmanager/no-utilities": "error",
        "fabmanager/scoped-translation": ["error", { "ignoreAbstractKeyword": false }]
      }
    },
    {
      "files": ["app/frontend/src/javascript/models/**/*.ts"],
      "rules": {
        "camelcase": "off"
      }
    },
    {
      "files": ["test/**/*"],
      "plugins": ["jest"],
      "env": {
        "jest/globals": true
      },
      "globals": {
        "Range": true,
        "Document": true
      },
      "parserOptions": {
        "project": "./test/frontend/tsconfig.json"
      }
    }
  ],
  "settings": {
    "react": {
      "version": "detect"
    }
  }
}