env:
  browser: true
  cypress/globals: true
  es6: true
  jest: true
  node: true
extends:
  - eslint:recommended
  - google
  - plugin:jsx-a11y/recommended
  - plugin:react/recommended
  - prettier
  - prettier/react
  - plugin:@typescript-eslint/eslint-recommended
globals:
  graphql: true
parser: babel-eslint
parserOptions:
  ecmaFeatures:
    experimentalObjectRestSpread: true
    jsx: true
  ecmaVersion: 2016
  sourceType: module
plugins:
  - cypress
  - jsx-a11y
  - react
rules:
  arrow-body-style:
    - error
    - as-needed
    - requireReturnForObjectLiteral: true
  comma-dangle:
    - error
    - arrays: always-multiline
      exports: always-multiline
      functions: ignore
      imports: always-multiline
      objects: always-multiline
  jsx-a11y/label-has-for:
    - 2
    - required:
        some:
          - nesting
          - id
  jsx-quotes:
    - error
    - prefer-double
  no-console: "off"
  new-cap: "off"
  object-curly-spacing:
    - error
    - always
  prefer-destructuring:
    - off
    - array: false
      object: true
  quotes:
    - error
    - backtick
    - allowTemplateLiterals: true
  react/display-name: 0
  no-invalid-this: 0
  require-jsdoc: "off"
  semi:
    - error
    - never
  valid-jsdoc: "off"


  # TODO(Nicholas) set these to error
  consistent-return: off
  react/prop-types:
    - off
    - ignore:
        - children
overrides:
  - parser: "@typescript-eslint/parser"
    files:
      - "*.ts"
      - "*.tsx"
    plugins:
      - "@typescript-eslint"
    rules:
      quotes: off
      "@typescript-eslint/quotes":
        - error
        - backtick
        - allowTemplateLiterals: true