{
    "root": true,
    "env": {
        "browser": true
    },
    "plugins": [
        "html"
    ],
    "globals": {
        "BOOMR": true,
        "BOOMR_start": true,
        "BOOMR_lstart": true,
        "BOOMR_onload": true,
        "BOOMR_test": true,
        "console": false,
        "unescape": false,
        "BOOMR_configt": true,
        "BOOMR_check_doc_domain": true,
        "_BOOMR_userAgentCheck": true
    },
    "rules": {
        //
        // Rules that were enabled by default in pre-1.0 eslint
        //  https://github.com/eslint/eslint/blob/master/docs/user-guide/migrating-to-1.0.0.md
        //  re-enable all the ones we are not specifically disabling
        //
        "no-alert": "error",
        "no-array-constructor": "error",
        "no-caller": "error",
        "no-catch-shadow": "error",
        "no-eval": "error",
        "no-extend-native": "error",
        "no-extra-bind": "error",
        "no-implied-eval": "error",
        "no-iterator": "error",
        "no-label-var": "error",
        "no-labels": "error",
        "no-lone-blocks": "error",
        "no-loop-func": "error",
        "no-multi-str": "error",
        "no-native-reassign": "error",
        "no-new": "error",
        "no-new-func": "error",
        "no-new-object": "error",
        "no-new-wrappers": "error",
        "no-octal-escape": "error",
        "no-process-exit": "error",
        "no-proto": "error",
        "no-return-assign": "error",
        "no-script-url": "error",
        "no-sequences": "error",
        "no-shadow": "error",
        "no-shadow-restricted-names": "error",
        "no-spaced-func": "error",
        "no-undef-init": "error",
        "no-unused-expressions": "error",
        "no-use-before-define": ["error",
            { "functions": false }
        ],
        "no-with": "error",
        "comma-spacing": "error",
        "curly": ["error", "all"],
        "eol-last": "error",
        "no-extra-parens": ["error", "functions"],
        "eqeqeq": "error",
        "new-parens": "error",
        "semi": "error",
        "space-infix-ops": "error",
        "yoda": ["error", "never"],
        "spaced-comment": ["error", "always", {
            "block": {
                "balanced": true
            }
        }],

        //
        // Changes over defaults
        //
        "keyword-spacing": "error",
        "no-mixed-spaces-and-tabs": "error",
        "quotes": ["error", "double", "avoid-escape"],
        "dot-notation": ["error",
            { "allowKeywords": false}
        ],
        "space-unary-ops": "error",
        "key-spacing": ["error",
            { "beforeColon": false, "afterColon": true, "mode": "minimum" }
        ],
        "no-empty": "error",
        "brace-style": ["error", "stroustrup",
            { "allowSingleLine": false }
        ],
        "semi-spacing": ["error",
            { "before": false, "after": true }
        ],
        "indent": ["error", 2,
            { "VariableDeclarator": "first", "MemberExpression": 1, "CallExpression": { "arguments": 1 } }
        ],
        "space-before-function-paren": ["error", "never"],
        "no-trailing-spaces": ["error",
            {"skipBlankLines": false }
        ],
        "linebreak-style": ["error", "unix"],
        "comma-dangle": ["error", "never"],
        "operator-linebreak": ["error", "after"],
        "space-in-parens": ["error", "never"],
        "no-debugger": "error",
        "block-spacing": "error",
        "lines-around-comment": ["error",
            { "allowBlockStart": true, "allowObjectStart": true, "ignorePattern": "BEGIN_|END_|SOASTA PRIVATE" }
        ],
        "no-inline-comments": ["error",
            { "ignorePattern": "^ ?(BEGIN_|END_|fails|keep)" }
        ],
        "newline-after-var": ["error", "always"],
        "newline-before-return": "error",
        "max-len": ["error", 120],
        "no-irregular-whitespace": "error",
        "no-multiple-empty-lines": ["error", 
            { "max": 1 }
        ],
        "padded-blocks": ["error", "never"],
        "one-var-declaration-per-line": "error",
        "padding-line-between-statements": ["error",
            { "blankLine": "always", "prev": "block-like", "next": "if" },
            { "blankLine": "always", "prev": "expression", "next": "if" },
            { "blankLine": "always", "prev": "var", "next": "if" },
            { "blankLine": "always", "prev": "block-like", "next": "var" },
            { "blankLine": "always", "prev": "try", "next": "*" },
            { "blankLine": "always", "prev": "block-like", "next": "expression" },
            { "blankLine": "always", "prev": "*", "next": "function" },
            { "blankLine": "always", "prev": "*", "next": "block" },
            { "blankLine": "always", "prev": "block", "next": "*" },
            { "blankLine": "always", "prev": "*", "next": "block-like" },
            { "blankLine": "always", "prev": "block-like", "next": "*" },
            { "blankLine": "always", "prev": "*", "next": "return" }
        ],
        "object-curly-spacing": ["error", "always"],
        "array-bracket-spacing": ["error", "never"],
        "no-multi-spaces": ["error",
            { "exceptions": { "VariableDeclarator": true, "Property": true } }
        ],

        //
        // To enable soon
        //

        //"require-jsdoc": "error",
        // "valid-jsdoc": "error",

        //
        // Disabled rules
        //

        // We have a lot of variables in underscore_casing
        "camelcase": 0,

        // Not ready for strict-mode yet
        "strict": 0,

        // We have some functions like BOOMR_check_doc_domain or BOOMR.
        "new-cap": 0,

        // We use console.log for debugging
        "no-console": 0,

        // We use _s in a couple places for internal vars
        "no-underscore-dangle": 0,

        // We delete some global vars for compat with older IE versions
        "no-delete-var": 0,
    }
}
