---
# Based on the AirBnb JavaScript styleguides with our own twist
env:
  es6: true
  node: true
  mocha: true
extends:
  - eslint:recommended
  - plugin:lodash/recommended
  - plugin:promise/recommended
  - plugin:import/errors
  - plugin:import/warnings
parser: babel-eslint
parserOptions:
  sourceType: module
  ecmaFeatures:
    classes: true
    experimentalObjectRestSpread: true
plugins:
  - promise
  - lodash
  - import
rules:
  indent: [ error, 2, {
    MemberExpression: off
  } ]
  linebreak-style: [ error, unix ]
  semi: [ error, always ]
  quotes: [ error, single, { avoidEscape: true } ]
  no-mixed-spaces-and-tabs: error
  space-before-blocks: error
  arrow-spacing: error
  key-spacing: [ error, { afterColon: true, mode: minimum } ]
  brace-style: [ error, '1tbs' ]
  comma-spacing: [ error, { before: false, after: true } ]
  comma-style: [ error, last, { exceptions: { VariableDeclaration: true } } ]
  array-bracket-spacing: [ error, always, { singleValue: false } ]
  computed-property-spacing: [ error, never ]
  object-curly-spacing: [ error, always ]
  prefer-const: error
  no-var: error
  promise/no-nesting: off
  import/first: error
  import/newline-after-import: error
  import/no-named-as-default: off
  import/no-extraneous-dependencies: [ error, { devDependencies: true } ]
  lodash/import-scope: off
  lodash/preferred-alias: off
  lodash/prop-shorthand: off
  lodash/prefer-lodash-method: [ error, { ignoreObjects: [ BbPromise, path ] } ]
