{
  "plugins": [
    "eslint-plugin-react", // https://github.com/yannickcr/eslint-plugin-react
    "eslint-plugin-promise"
  ],
  "parser": "babel-eslint",
  "parserOptions": {
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "env": {
    "browser": true,
    "es6": true,
    "mocha": true
  },
  "extends" : ["eslint:recommended", "plugin:react/recommended"],
  "rules": {
    "arrow-parens": [1, "as-needed"],
    "comma-dangle": [0], // babel removes dangling commas for us
    "eqeqeq": [2, "smart"],
    "indent": [2, 2],
    "jsx-quotes": 1,
    "keyword-spacing": 1,
    "no-console": [1, { "allow": ["warn", "error"] }], // minor offense
    "no-redeclare": [1], // minor offense
    "no-trailing-spaces": 1,
    "no-unreachable": [1], // rule is not 100% accurate
    "no-unused-vars": [1, { "args": "all", "argsIgnorePattern": "^_" }],
    "no-var": 2,
    "promise/catch-or-return": 2,
    "promise/param-names": 1,
    "react/display-name": 0, // minor offense
    "react/forbid-prop-types": 1,
    "react/jsx-closing-bracket-location": [1, { "nonEmpty": "after-props", "selfClosing": "after-props" }],
    "react/jsx-curly-spacing": [1, "never", {"allowMultiline": false}],
    "react/jsx-first-prop-new-line": [1, "multiline"],
    "react/jsx-indent-props": [1, 2],
    "react/jsx-tag-spacing": [1, { "beforeSelfClosing": "always" }],
    "react/jsx-wrap-multilines": 1,
    "react/no-did-mount-set-state": 1,
    "react/no-did-update-set-state": 1,
    "react/no-multi-comp": [1, { "ignoreStateless": true }],
    "react/prefer-es6-class": 1,
    "react/prop-types": 0, // TODO: enable prop type validation
    "react/self-closing-comp": 1,
    "react/sort-comp": 1,
    "react/sort-prop-types": 1,
    "semi": [2, "always"],
    "sort-imports": [1, { "ignoreCase": true, "memberSyntaxSortOrder": ["single", "multiple", "all", "none"] }],
    "space-before-blocks": [1, "always"],
    "space-before-function-paren": [1, "never"],
    "strict": [1, "safe"]
  }
}
