---
  root: true
  extends: openstack
  rules:
    # disabled rules from openstack config
    no-empty: 0 # we use empty blocks with try-catch
    no-extra-parens: 0 # extra parens are preferred with JSX
    operator-linebreak: 0 # disabled due to heavy use of ternary operator in JSX
    no-warning-comments: 0 # we're ok with FIXMEs
    no-undefined: 0 # we're ok with using undefined
    no-process-env: 0 # we use it in a few places and are ok with it

    # overridden rules from openstack config
    curly: [2, multi-line, consistent] # openstack config uses 'all' mode, but we're ok with braceless one-liners

    # extra rules
    no-unexpected-multiline: 2
    dot-location: [2, property]
    no-empty-pattern: 2
    no-useless-call: 2
    yoda: 2
    no-undef: 2
    no-use-before-define: 2
    array-bracket-spacing: 2
    comma-spacing: 2
    computed-property-spacing: 2
    id-match: [2, '^([A-Za-z\d_$]+)$', {properties: true}]
    jsx-quotes: [2, prefer-single]
    key-spacing: 2
    new-cap: [2, {newIsCap: true, capIsNew: false}]
    no-array-constructor: 2
    no-lonely-if: 2
    no-new-object: 2
    no-spaced-func: 2
    object-curly-spacing: 2
    padded-blocks: [2, never]
    quote-props: [2, as-needed]
    quotes: [2, single, avoid-escape]
    space-before-function-paren: [2, never]
    space-before-keywords: 2
  env:
    node: true
