extends:
  - plugin:@gitlab/default
  - plugin:@gitlab/i18n
  - plugin:no-jquery/slim
  - plugin:no-jquery/deprecated-3.4
  - ./tooling/eslint-config/conditionally_ignore_ee.js
globals:
  __webpack_public_path__: true
  gl: false
  gon: false
  localStorage: false
  IS_EE: false
plugins:
  - no-jquery
settings:
  import/resolver:
    webpack:
      config: './config/webpack.config.js'
rules:
  import/no-commonjs: error
  import/no-default-export: off
  no-underscore-dangle:
    - error
    - allow:
        - __
        - _links
  import/no-unresolved:
    - error
  # Disabled for now, to make the airbnb-base 12.1.0 -> 13.1.0 update smoother
  no-else-return:
    - error
    - allowElseIf: true
  lines-between-class-members: off
  # all offenses of no-jquery/no-animate-toggle are false positives ( $toast.show() )
  no-jquery/no-animate-toggle: off
  no-jquery/no-event-shorthand: off
  no-jquery/no-serialize: error
  promise/always-return: off
  promise/no-callback-in-promise: off
  '@gitlab/no-global-event-off': error
  no-param-reassign:
    - error
    - props: true
      ignorePropertyModificationsFor:
        - acc
        - accumulator
        - el
        - element
        - state
      ignorePropertyModificationsForRegex:
        - '^draft'
  import/order:
    - error
    - groups:
        - builtin
        - external
        - internal
        - parent
        - sibling
        - index
      pathGroups:
        - pattern: ~/**
          group: internal
        - pattern: emojis/**
          group: internal
        - pattern: '{ee_,}empty_states/**'
          group: internal
        - pattern: '{ee_,}icons/**'
          group: internal
        - pattern: '{ee_,}images/**'
          group: internal
        - pattern: vendor/**
          group: internal
        - pattern: shared_queries/**
          group: internal
        - pattern: '{ee_,}spec/**'
          group: internal
        - pattern: '{ee_,}jest/**'
          group: internal
        - pattern: ee_else_ce/**
          group: internal
        - pattern: ee/**
          group: internal
        - pattern: ee_component/**
          group: internal
        - pattern: '{test_,}helpers/**'
          group: internal
        - pattern: test_fixtures/**
          group: internal
      alphabetize:
        order: asc
overrides:
  - files:
      - '**/spec/**/*'
    rules:
      '@gitlab/require-i18n-strings': off
      '@gitlab/no-runtime-template-compiler': off
  - files:
      - 'config/**/*'
      - 'scripts/**/*'
      - '*.config.js'
      - '*.config.*.js'
    rules:
      '@gitlab/require-i18n-strings': off
      import/no-extraneous-dependencies: off
      import/no-commonjs: off
      import/no-nodejs-modules: off
      filenames/match-regex: off
      no-console: off
  - files:
      - '*.stories.js'
    rules:
      filenames/match-regex: off
