{
  "extends": ["react-app", "react-jam3"],
  "plugins": ["jam3"],
  "settings": {
    "react": {
      "version": "detect"
    }
  },
  "rules": {
    "prettier/prettier": "warn",
    "jam3/no-sanitizer-with-danger": [
      2,
      {
        "wrapperName": ["sanitizer"]
      }
    ],
    "jam3/forbid-methods": 2,
    "no-console": "off",
    "react/sort-comp": [
      1,
      {
        "order": ["static-methods", "lifecycle", "everything-else", "render"],
        "groups": {
          "lifecycle": [
            "displayName",
            "propTypes",
            "contextTypes",
            "childContextTypes",
            "mixins",
            "statics",
            "defaultProps",
            "constructor",
            "getDefaultProps",
            "getInitialState",
            "state",
            "getChildContext",
            "componentWillMount",
            "UNSAFE_componentWillMount",
            "componentDidMount",
            "componentWillReceiveProps",
            "UNSAFE_componentWillReceiveProps",
            "shouldComponentUpdate",
            "componentWillUpdate",
            "UNSAFE_componentWillUpdate",
            "componentDidUpdate",
            "componentWillUnmount",
            "componentWillAppear",
            "componentWillEnter",
            "componentWillLeave"
          ]
        }
      }
    ]
  },
  "overrides": [
    {
      "files": ["src/util/**/*.js"],
      "rules": {
        "require-jsdoc": [
          "error",
          {
            "require": {
              "FunctionDeclaration": true,
              "ClassDeclaration": true,
              "MethodDefinition": false,
              "ArrowFunctionExpression": false,
              "FunctionExpression": false
            }
          }
        ]
      }
    }
  ]
}
