{
  "root": true,
  "extends": [
    "airbnb/base",
    "plugin:editorconfig/noconflict",
    "plugin:mocha/recommended"
  ],
  "plugins": [
    "sonarjs",
    "editorconfig",
    "mocha"
  ],
  "rules": {
    "no-console": "off",
    "camelcase": [
      2,
      {
        "ignoreDestructuring": true
      }
    ],
    "arrow-parens": [
      2,
      "always"
    ],
    "quotes": [
      2,
      "single"
    ],
    "implicit-arrow-linebreak": "off",
    "consistent-return": "off",
    "no-unused-vars": [
      "error",
      {
        "argsIgnorePattern": "^_",
        "ignoreRestSiblings": true
      }
    ],
    "object-curly-newline": "off",
    "max-params": [
      "error",
      4
    ],
    "max-lines": [
      "error",
      250
    ],
    "max-lines-per-function": [
      "error",
      {
        "max": 20,
        "skipBlankLines": true,
        "skipComments": true
      }
    ],
    "max-len": [
      "error",
      {
        "code": 100,
        "ignoreComments": true
      }
    ],
    "complexity": [
      "error",
      5
    ],
    "import/no-extraneous-dependencies": [
      "off"
    ],
    "sonarjs/cognitive-complexity": [
      "error",
      5
    ],
    "sonarjs/no-one-iteration-loop": [
      "error"
    ],
    "sonarjs/no-identical-expressions": [
      "error"
    ],
    "sonarjs/no-use-of-empty-return-value": [
      "error"
    ],
    "sonarjs/no-extra-arguments": [
      "error"
    ],
    "sonarjs/no-identical-conditions": [
      "error"
    ],
    "sonarjs/no-collapsible-if": [
      "error"
    ],
    "sonarjs/no-collection-size-mischeck": [
      "error"
    ],
    "sonarjs/no-duplicate-string": [
      "error"
    ],
    "sonarjs/no-duplicated-branches": [
      "error"
    ],
    "sonarjs/no-identical-functions": [
      "error"
    ],
    "sonarjs/no-redundant-boolean": [
      "error"
    ],
    "sonarjs/no-unused-collection": [
      "error"
    ],
    "sonarjs/no-useless-catch": [
      "error"
    ],
    "sonarjs/prefer-object-literal": [
      "error"
    ],
    "sonarjs/prefer-single-boolean-return": [
      "error"
    ],
    "sonarjs/no-inverted-boolean-check": [
      "error"
    ]
  },
  "overrides": [
    {
      "files": ["**/*.{test,spec}.js"],
      "rules": {
        "max-lines-per-function": "off",
        "prefer-arrow-callback": "off",
        "func-names": "off"
      }
    }
  ],
  "env": {
    "browser": false,
    "node": true,
    "jest": true
  }
}
