env:
  browser: true
  es6: true
extends: 'eslint:recommended'
parserOptions:
  sourceType: module
  ecmaVersion: 2017
globals:
  $: false
  require: false
parser: babel-eslint
plugins:
  - babel
ignorePatterns:
  - app/javascript/vendor/**/*.js
rules:
  # https://eslint.org/docs/rules/
  array-callback-return: error
  babel/no-unused-expressions: error
  block-scoped-var: error
  consistent-return: error
  default-case: error
  dot-notation: error
  eqeqeq: error
  init-declarations: error
  no-caller: error
  no-empty-function: error
  no-eval: error
  no-extend-native: error
  no-implicit-coercion: error
  no-lone-blocks: error
  no-lonely-if: error
  no-mixed-operators: error
  no-new: warn
  no-new-wrappers: error
  no-return-assign: error
  no-self-compare: error
  no-sequences: error
  no-shadow: error
  no-shadow-restricted-names: error
  #no-unused-expressions: error
  no-unused-vars:
    - error
    - argsIgnorePattern: "^_"
      args: none
  no-use-before-define: error
  no-useless-call: error
  no-useless-concat: error
  no-useless-return: error

  # formatting issues
  array-bracket-spacing: warn
  brace-style: [warn, 1tbs, allowSingleLine: true]
  comma-spacing: warn
  curly: warn
  dot-location: [warn, property]
  eol-last: warn
  func-call-spacing: warn
  indent: [warn, 2]
  linebreak-style: [warn, unix]
  key-spacing: warn
  keyword-spacing: warn
  no-multiple-empty-lines: warn
  no-tabs: warn
  no-trailing-spaces: warn
  no-whitespace-before-property: warn
  space-before-blocks: warn
  space-in-parens: warn
  space-infix-ops: warn
  space-unary-ops: warn
  spaced-comment: warn

# These rules are potentially useful, but are currently too noisy to enable.

#  block-spacing: warn
#  no-alert: warn
#  no-extra-parens: warn
#  no-magic-numbers:
#    - warn
#    - ignore: [-1, 0, 1]
#      ignoreArrayIndexes: true
#      enforceConst: true
#  no-multi-spaces: warn
#  no-negated-condition: warn
#  no-param-reassign: warn
#  no-var: warn
#  object-curly-spacing: warn
#  prefer-arrow-callback: warn
#  prefer-const: warn
#  prefer-template: warn
#  quote-props: [warn, consistent-as-needed]
#  radix: warn
#  semi: warn
#  space-before-function-paren: warn
#  vars-on-top: warn
