{
  "extends": ["eslint:recommended"],
  "env": {
    "browser": true,
    "node": true,
    "shared-node-browser": true,
    "commonjs": true,
    "es6": false,
    "jquery": true
  },
  "parserOptions":{
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true
    }
  },
  "globals": {
    "shell": false,
    "_": false,
    "BEM": false,
    "iget2": true,
    "niget": false,
    "Ya": false,
    "BEMHTML": false,
    "borschik": false,
    "block": false,
    "tag": false,
    "elem": false,
    "content": false,
    "prependContent": false,
    "appendContent": false,
    "attrs": false,
    "match": false,
    "apply": false,
    "applyCtx": false,
    "applyNext": false,
    "js": false,
    "def": false,
    "mix": false,
    "mod": false,
    "replace": false,
    "elemMod": false,
    "local": false,
    "mode": false,
    "wrap": false,
    "extend": false,
    "console": false,
    "require": false,
    "exports": true,
    "cls": false,
    "u": false,
    "moment": false,
    "addJs": false,
    "addMix": false,
    "addMods": false,
    "addAttrs": false,

    "hasLoginRights": false,
    "hasEnabledFeatures": false,
    "withUidPar": false,
    "escapeJs": false,
    "safeStringify": false,

    "yaCounter191494": false,
    "yaCounter18641516": false,
    "ymaps": false,
    "SuperCalendar": false,
    "Highcharts": false,

    "chai": false,
    "expect": false,
    "it": false,
    "sinon": false,
    "after": false,
    "afterEach": false,
    "before": false,
    "beforeEach": false,
    "describe": false,
    "SANDBOX": false,

    "CONSTS": false,
    "getUrl": false,
    "Promise": false,
    "Clipboard": false,
    "URL": false
  },
  "rules": {

    /*
      Правила ES5
    */

    // disallow unused variables
    "no-unused-vars": 0,
//    "no-unused-vars": ["error", {
//      "args": "none"
//    }],

    // disallow undeclared variables
    "no-undef": "error",

    // enforce consistent indentation
    "indent": ["error", 4, {
      "SwitchCase": 1,
      "MemberExpression": 1
    }],

    // disallow empty block statements
    "no-empty": ["error", {
      "allowEmptyCatch": true
    }],

    // enforce a maximum line length
    "max-len": ["error", {
      "code": 160,
      "ignoreComments": true,
      "ignoreStrings": true,
      "ignorePattern": "borschik"
    }],

    // require camelcase
    "camelcase": "off",

    // require === and !==
    "eqeqeq": "off",

    //disallow unused expressions
//    "no-unused-expressions": ["error", {
//      "allowShortCircuit": true,
//      "allowTernary": true
//    }],
    "no-unused-expressions": 0,

    // require or disallow semicolons instead of ASI
//    "semi": ["error", "always"],
    "semi": 0,

    "no-cond-assign": 0,

    "no-constant-condition": 0,

    // require dot notation
    "dot-notation": "off",

    // disallow Null Comparisons
//    "no-eq-null": "error",
    "no-eq-null": 0,

    // enforce consistent spacing before and after keywords
    "keyword-spacing": ["error"],

    // disallow or enforce spaces inside of brackets
    "array-bracket-spacing": ["error", "never"],

    // enforce consistent spacing between keys and values in object literal properties
    "key-spacing": ["error", {
      "beforeColon": false,
      "afterColon": true
    }],

    // require or disallow spaces before/after unary operators
    "space-unary-ops": ["error", {
      "words": true,
      "nonwords": true,
      "overrides": {
        "++": false,
        "--": false,
        "+": false,
        "-": false,
        "~": false,
        "!": false
      }
    }],

    // require spaces around infix operators
    "space-infix-ops": "error",

    // require brace style
    "brace-style": ["error", "1tbs", { "allowSingleLine": true }],
//    "brace-style": ["error", "1tbs"],

    // enforce the consistent use of either backticks, double, or single quotes
    "quotes": ["error", "single", {
        "avoidEscape": true
    }],

    // require or disallow a space before function parenthesis
    "space-before-function-paren": ["error", "never"],

    // disallow mixed spaces and tabs for indentation
    "no-mixed-spaces-and-tabs": "error",

    // enforce consistent spacing inside braces
    "object-curly-spacing": ["error", "always", {
      "objectsInObjects": true,
      "arraysInObjects": true
    }],

//     enforce valid JSDoc comments
//    "valid-jsdoc": "error", //TODO

//     require JSDoc comments
//    "require-jsdoc": "error",

    // require or disallow space before blocks
    "space-before-blocks": ["error", "always"],

    // enforce consistent linebreak style for operators
    "operator-linebreak": ["error", "after"],

    "no-multiple-empty-lines": ["error", {
      "max": 1,
      "maxBOF": 0,
      "maxEOF": 0
    }],

    "func-call-spacing": ["error", "never"],

    "no-trailing-spaces": "error",

    "no-unexpected-multiline": "error",

//    "comma-style": ["error", "last"],

    "quote-props": ["error", "as-needed"],

//    "no-lonely-if": ["error"],

//    "curly": ["error"],

//    "one-var": ["error", "always"],

    "no-multi-spaces": ["error"],

    "no-irregular-whitespace": ["error", {
      "skipRegExps": true,
      "skipComments": true,
      "skipStrings": true,
      "skipTemplates": true
    }],

    "require-iget2": ["error"]
  }
}
