env:
  es6: true
  commonjs: true

parser: babel-eslint

parserOptions:
  ecmaVersion: 2018
  sourceType: module
  ecmaFeatures:
    impliedStrict: true
    modules: true

extends:
  - eslint:recommended
  - plugin:import/errors
  - plugin:import/warnings

rules:
  array-callback-return: 2
  arrow-body-style: 2
  class-methods-use-this: 2
  dot-notation: 2
  eqeqeq: 2
  import/no-amd: 2
  import/no-commonjs: 2
  import/no-duplicates: 2
  import/no-extraneous-dependencies: 2
  import/no-mutable-exports: 2
  import/no-namespace: 2
  import/no-nodejs-modules: 2
  import/prefer-default-export: 2
  no-alert: 2
  no-constant-condition:
    - 2
    - checkLoops: false
  no-duplicate-imports: 2
  no-empty-function: 2
  no-else-return: 2
  no-eval: 2
  no-extend-native: 2
  no-extra-bind: 2
  no-global-assign: 2
  no-implicit-globals: 2
  no-implied-eval: 2
  no-invalid-this: 2
  no-lonely-if: 2
  no-loop-func: 2
  no-new: 2
  no-new-func: 2
  no-new-wrappers: 2
  no-proto: 2
  no-script-url: 2
  no-self-compare: 2
  no-throw-literal: 2
  no-unmodified-loop-condition: 2
  no-unneeded-ternary:
    - 2
    - defaultAssignment: false
  no-unsafe-negation: 2
  no-unused-expressions:
    - 2
    - allowTernary: true
      allowShortCircuit: true
  no-use-before-define:
    - 2
    - nofunc
  no-useless-call: 2
  no-useless-computed-key: 2
  no-useless-concat: 2
  no-useless-constructor: 2
  no-useless-rename: 2
  no-var: 2
  no-with: 2
  object-shorthand: 2
  operator-assignment: 2
  prefer-arrow-callback: 2
  prefer-const: 2
  prefer-rest-params: 2
  prefer-spread: 2
