{
  "parser": "babel-eslint",
  "env": {
    "es6": true,
    "node": true,
    "mocha": true,
    "browser": true
  },
  "ecmaFeatures": {
    "arrowFunctions": true,
    "blockBindings": true,
    "classes": true,
    "defaultParams": true,
    "destructuring": true,
    "forOf": true,
    "generators": false,
    "modules": true,
    "objectLiteralComputedProperties": true,
    "objectLiteralDuplicateProperties": false,
    "objectLiteralShorthandMethods": true,
    "objectLiteralShorthandProperties": true,
    "spread": true,
    "superInFunctions": true,
    "templateStrings": true,
    "jsx": true
  },
  "rules": {
    // possible errors
    "comma-dangle": [2, "never"],
    "no-cond-assign": [2, "always"],
    "no-console": [2],
    "no-constant-condition": [2],
    "no-control-regex": [2],
    "no-debugger": [2],
    "no-dupe-args": [2],
    "no-dupe-keys": [2],
    "no-duplicate-case": [2],
    "no-empty": [2],
    "no-empty-character-class": [2],
    "no-ex-assign": [2],
    "no-extra-boolean-cast": [2],
    "no-extra-parens": [0],
    "no-extra-semi": [2],
    "no-func-assign": [2],
    "no-inner-declarations": [2],
    "no-invalid-regexp": [2],
    "no-irregular-whitespace": [2],
    "no-negated-in-lhs": [2],
    "no-obj-calls": [2],
    "no-regex-spaces": [2],
    "no-sparse-arrays": [2],
    "no-unexpected-multiline": [2],
    "no-unreachable": [2],
    "use-isnan": [2],
    "valid-jsdoc": [2, {
      "requireReturn": false,
      "requireParamDescription": false,
      "requireReturnDescription": false
    }],
    "valid-typeof": [2],

    // best practices
    "accessor-pairs": [2],
    "array-callback-return": [2],
    "block-scoped-var": [2],
    "complexity": [1, 8],
    "consistent-return": [0],
    "curly": [2, "multi-line"],
    "default-case": [2],
    "dot-location": [2, "property"],
    "dot-notation": [2],
    "eqeqeq": [2],
    "guard-for-in": [0],
    "no-alert": [2],
    "no-caller": [2],
    "no-case-declarations": [2],
    "no-div-regex": [2],
    "no-else-return": [2],
    "no-empty-function": [2],
    "no-empty-pattern": [2],
    "no-eq-null": [2],
    "no-eval": [2],
    "no-extend-native": [2],
    "no-extra-bind": [2],
    "no-extra-label": [2],
    "no-fallthrough": [2],
    "no-floating-decimal": [2],
    "no-implicit-coercion": [0],
    "no-implicit-globals": [2],
    "no-implied-eval": [2],
    "no-invalid-this": [2],
    "no-iterator": [2],
    "no-labels": [2],
    "no-lone-blocks": [2],
    "no-loop-func": [2],
    "no-magic-numbers": [1, { "ignoreArrayIndexes": true }],
    "no-multi-spaces": [2],
    "no-multi-str": [2],
    "no-native-reassign": [2],
    "no-new": [2],
    "no-new-func": [2],
    "no-new-wrappers": [2],
    "no-octal": [2],
    "no-octal-escape": [2],
    "no-param-reassign": [0],
    "no-process-env": [0],
    "no-proto": [2],
    "no-redeclare": [2],
    "no-return-assign": [2],
    "no-script-url": [2],
    "no-self-assign": [2],
    "no-self-compare": [2],
    "no-sequences": [2],
    "no-throw-literal": [2],
    "no-unmodified-loop-condition": [2],
    "no-unused-expressions": [2, { "allowShortCircuit": true }],
    "no-unused-labels": [2],
    "no-useless-call": [2],
    "no-useless-concat": [2],
    "no-void": [2],
    "no-warning-comments": [0],
    "no-with": [2],
    "radix": [2],
    "vars-on-top": [0],
    "wrap-iife": [2, "inside"],
    "yoda": [2, "never"],

    // strict
    "strict": [0],

    // variables
    "init-declarations": [0],
    "no-catch-shadow": [2],
    "no-delete-var": [2],
    "no-label-var": [2],
    "no-shadow": [2],
    "no-shadow-restricted-names": [2],
    "no-undef": [2],
    "no-undef-init": [2],
    "no-undefined": [2],
    "no-unused-vars": [2],
    "no-use-before-define": [2],

    // node.js
    "callback-return": [0],
    "global-require": [0],
    "handle-callback-err": [2],
    "no-mixed-requires": [2],
    "no-new-require": [2],
    "no-path-concat": [2],
    "no-process-exit": [2],
    "no-restricted-imports": [0],
    "no-restricted-modules": [0],
    "no-sync": [0],

    // stylistic
    "array-bracket-spacing": [2, "never"],
    "block-spacing": [2],
    "brace-style": [2, "1tbs", { "allowSingleLine": true }],
    "camelcase": [2, { "properties": "never" }],
    "comma-spacing": [2, {
      "before": false,
      "after": true
    }],
    "comma-style": [2, "last"],
    "computed-property-spacing": [2, "never"],
    "consistent-this": [2, "_this"],
    "eol-last": [2],
    "func-names": [0],
    "func-style": [0],
    "indent": [2, 2],
    "jsx-quotes": [2, "prefer-single"],
    "key-spacing": [2, {
      "beforeColon": false,
      "afterColon": true
    }],
    "keyword-spacing": [2],
    "linebreak-style": [2, "unix"],
    "lines-around-comment": [2, {
      "beforeBlockComment": true
    }],
    "max-depth": [2, 4],
    "max-len": [2, 120, 4],
    "max-nested-callbacks": [2, 4],
    "max-params": [0],
    "max-statements": [0],
    "new-cap": [2],
    "new-parens": [2],
    "newline-after-var": [2],
    "newline-per-chained-call": [0],
    "no-array-constructor": [2],
    "no-bitwise": [0],
    "no-continue": [0],
    "no-inline-comments": [0],
    "no-lonely-if": [2],
    "no-mixed-spaces-and-tabs": [2],
    "no-multiple-empty-lines": [2],
    "no-negated-condition": [0],
    "no-nested-ternary": [2],
    "no-new-object": [2],
    "no-plusplus": [0],
    "no-spaced-func": [2],
    "no-ternary": [0],
    "no-trailing-spaces": [2],
    "no-underscore-dangle": [0],
    "no-unneeded-ternary": [2],
    "no-whitespace-before-property": [2],
    "object-curly-spacing": [2, "always"],
    "one-var": [2, {
      "uninitialized": "always",
      "initialized": "never"
    }],
    "one-var-declaration-per-line": [0],
    "operator-assignment": [0],
    "operator-linebreak": [2, "before"],
    "padded-blocks": [0],
    "quote-props": [2, "as-needed"],
    "quotes": [2, "single"],
    "require-jsdoc": [0],
    "semi": [2, "always"],
    "semi-spacing": [2, {
      "before": false,
      "after": true
    }],
    "sort-imports": [0],
    "sort-vars": [0],
    "space-before-blocks": [2, "always"],
    "space-before-function-paren": [2, {
      "anonymous": "always",
      "named": "never"
    }],
    "space-in-parens": [2, "never"],
    "space-infix-ops": [2],
    "space-unary-ops": [2],
    "spaced-comment": [2, "always"],
    "wrap-regex": [2],

    // ecmascript6
    "arrow-body-style": [0],
    "arrow-parens": [2],
    "arrow-spacing": [2, { "before": true, "after": true }],
    "constructor-super": [2],
    "generator-star-spacing": [2, "after"],
    "no-class-assign": [2],
    "no-confusing-arrow": [0],
    "no-const-assign": [2],
    "no-dupe-class-members": [2],
    "no-new-symbol": [2],
    "no-this-before-super": [2],
    "no-useless-constructor": [2],
    "no-var": [2],
    "object-shorthand": [0],
    "prefer-arrow-callback": [0],
    "prefer-const": [2],
    "prefer-reflect": [0],
    "prefer-rest-params": [0],
    "prefer-spread": [0],
    "prefer-template": [2],
    "require-yield": [2],
    "template-curly-spacing": [2, "never"]
  }
}
