.eslintrc

Summary

Maintainability
Test Coverage
{
env: { node: true },
rules: {
  // Generated using magic regex:
  // from: ^([a-z-]+) - (.*)$
  // to:  // \2: http://eslint.org/docs/rules/\1\n  \1: 2,\n
  //
  // Use http://oleg.fi/relaxed-json/ to convert to plain json

  // Possible Errors
  // disallow or enforce trailing commas (recommended): http://eslint.org/docs/rules/comma-dangle
  comma-dangle: [2, "always-multiline"],

  // disallow assignment in conditional expressions (recommended): http://eslint.org/docs/rules/no-cond-assign
  no-cond-assign: 2,

  // disallow use of console in the node environment (recommended): http://eslint.org/docs/rules/no-console
  no-console: 0, // TODO: Maybe one should annotate console.logs

  // disallow use of constant expressions in conditions (recommended): http://eslint.org/docs/rules/no-constant-condition
  no-constant-condition: 2,

  // disallow control characters in regular expressions (recommended): http://eslint.org/docs/rules/no-control-regex
  no-control-regex: 2,

  // disallow use of debugger (recommended): http://eslint.org/docs/rules/no-debugger
  no-debugger: 2,

  // disallow duplicate arguments in functions (recommended): http://eslint.org/docs/rules/no-dupe-args
  no-dupe-args: 2,

  // disallow duplicate keys when creating object literals (recommended): http://eslint.org/docs/rules/no-dupe-keys
  no-dupe-keys: 2,

  // disallow a duplicate case label. (recommended): http://eslint.org/docs/rules/no-duplicate-case
  no-duplicate-case: 2,

  // disallow the use of empty character classes in regular expressions (recommended): http://eslint.org/docs/rules/no-empty-character-class
  no-empty-character-class: 2,

  // disallow empty statements (recommended): http://eslint.org/docs/rules/no-empty
  no-empty: 2,

  // disallow assigning to the exception in a catch block (recommended): http://eslint.org/docs/rules/no-ex-assign
  no-ex-assign: 2,

  // disallow double-negation boolean casts in a boolean context (recommended): http://eslint.org/docs/rules/no-extra-boolean-cast
  no-extra-boolean-cast: 2,

  // disallow unnecessary parentheses: http://eslint.org/docs/rules/no-extra-parens
  no-extra-parens: 0,

  // disallow unnecessary semicolons (recommended): http://eslint.org/docs/rules/no-extra-semi
  no-extra-semi: 2,

  // disallow overwriting functions written as function declarations (recommended): http://eslint.org/docs/rules/no-func-assign
  no-func-assign: 2,

  // disallow function or variable declarations in nested blocks (recommended): http://eslint.org/docs/rules/no-inner-declarations
  no-inner-declarations: 2,

  // disallow invalid regular expression strings in the RegExp constructor (recommended): http://eslint.org/docs/rules/no-invalid-regexp
  no-invalid-regexp: 2,

  // disallow irregular whitespace outside of strings and comments (recommended): http://eslint.org/docs/rules/no-irregular-whitespace
  no-irregular-whitespace: 2,

  // disallow negation of the left operand of an in expression (recommended): http://eslint.org/docs/rules/no-negated-in-lhs
  no-negated-in-lhs: 2,

  // disallow the use of object properties of the global object (Math and JSON) as functions (recommended): http://eslint.org/docs/rules/no-obj-calls
  no-obj-calls: 2,

  // disallow multiple spaces in a regular expression literal (recommended): http://eslint.org/docs/rules/no-regex-spaces
  no-regex-spaces: 2,

  // disallow sparse arrays (recommended): http://eslint.org/docs/rules/no-sparse-arrays
  no-sparse-arrays: 2,

  // disallow unreachable statements after a return, throw, continue, or break statement (recommended): http://eslint.org/docs/rules/no-unreachable
  no-unreachable: 2,

  // disallow comparisons with the value NaN (recommended): http://eslint.org/docs/rules/use-isnan
  use-isnan: 2,

  // Ensure JSDoc comments are valid: http://eslint.org/docs/rules/valid-jsdoc
  valid-jsdoc: 0,

  // Ensure that the results of typeof are compared against a valid string (recommended): http://eslint.org/docs/rules/valid-typeof
  valid-typeof: 2,

  // Avoid code that looks like two expressions but is actually one: http://eslint.org/docs/rules/no-unexpected-multiline
  no-unexpected-multiline: 2,


  // Best Practices

  // Enforces getter/setter pairs in objects: http://eslint.org/docs/rules/accessor-pairs
  accessor-pairs: 2,

  // treat var statements as if they were block scoped: http://eslint.org/docs/rules/block-scoped-var
  block-scoped-var: 2,

  // specify the maximum cyclomatic complexity allowed in a program: http://eslint.org/docs/rules/complexity
  complexity: 2,

  // require return statements to either always or never specify values: http://eslint.org/docs/rules/consistent-return
  consistent-return: 2,

  // specify curly brace conventions for all control statements: http://eslint.org/docs/rules/curly
  curly: 2,

  // require default case in switch statements: http://eslint.org/docs/rules/default-case
  default-case: 2,

  // encourages use of dot notation whenever possible: http://eslint.org/docs/rules/dot-notation
  dot-notation: 2,

  // enforces consistent newlines before or after dots: http://eslint.org/docs/rules/dot-location
  dot-location: [2, "property"],

  // require the use of === and !==: http://eslint.org/docs/rules/eqeqeq
  eqeqeq: 2,

  // make sure for-in loops have an if statement: http://eslint.org/docs/rules/guard-for-in
  guard-for-in: 2,

  // disallow the use of alert, confirm, and prompt: http://eslint.org/docs/rules/no-alert
  no-alert: 2,

  // disallow use of arguments.caller or arguments.callee: http://eslint.org/docs/rules/no-caller
  no-caller: 2,

  // disallow division operators explicitly at beginning of regular expression: http://eslint.org/docs/rules/no-div-regex
  no-div-regex: 2,

  // disallow else after a return in an if: http://eslint.org/docs/rules/no-else-return
  no-else-return: 0,

  // disallow use of labels for anything other than loops and switches: http://eslint.org/docs/rules/no-empty-label
  no-empty-label: 2,

  // disallow comparisons to null without a type-checking operator: http://eslint.org/docs/rules/no-eq-null
  no-eq-null: 2,

  // disallow use of eval(): http://eslint.org/docs/rules/no-eval
  no-eval: 2,

  // disallow adding to native types: http://eslint.org/docs/rules/no-extend-native
  no-extend-native: 2,

  // disallow unnecessary function binding: http://eslint.org/docs/rules/no-extra-bind
  no-extra-bind: 2,

  // disallow fallthrough of case statements (recommended): http://eslint.org/docs/rules/no-fallthrough
  no-fallthrough: 2,

  // disallow the use of leading or trailing decimal points in numeric literals: http://eslint.org/docs/rules/no-floating-decimal
  no-floating-decimal: 2,

  // disallow the type conversions with shorter notations: http://eslint.org/docs/rules/no-implicit-coercion
  no-implicit-coercion: 0,

  // disallow use of eval()-like methods: http://eslint.org/docs/rules/no-implied-eval
  no-implied-eval: 2,

  // disallow this keywords outside of classes or class-like objects: http://eslint.org/docs/rules/no-invalid-this
  no-invalid-this: 0, // TODO: change me

  // disallow usage of __iterator__ property: http://eslint.org/docs/rules/no-iterator
  no-iterator: 2,

  // disallow use of labeled statements: http://eslint.org/docs/rules/no-labels
  no-labels: 2,

  // disallow unnecessary nested blocks: http://eslint.org/docs/rules/no-lone-blocks
  no-lone-blocks: 2,

  // disallow creation of functions within loops: http://eslint.org/docs/rules/no-loop-func
  no-loop-func: 2,

  // disallow use of multiple spaces: http://eslint.org/docs/rules/no-multi-spaces
  no-multi-spaces: 2,

  // disallow use of multiline strings: http://eslint.org/docs/rules/no-multi-str
  no-multi-str: 2,

  // disallow reassignments of native objects: http://eslint.org/docs/rules/no-native-reassign
  no-native-reassign: 2,

  // disallow use of new operator for Function object: http://eslint.org/docs/rules/no-new-func
  no-new-func: 2,

  // disallows creating new instances of String,Number, and Boolean: http://eslint.org/docs/rules/no-new-wrappers
  no-new-wrappers: 2,

  // disallow use of the new operator when not part of an assignment or comparison: http://eslint.org/docs/rules/no-new
  no-new: 2,

  // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251";: http://eslint.org/docs/rules/no-octal-escape
  no-octal-escape: 2,

  // disallow use of octal literals (recommended): http://eslint.org/docs/rules/no-octal
  no-octal: 2,

  // disallow reassignment of function parameters: http://eslint.org/docs/rules/no-param-reassign
  no-param-reassign: 0, // TODO: consider

  // disallow use of process.env: http://eslint.org/docs/rules/no-process-env
  no-process-env: 2,

  // disallow usage of __proto__ property: http://eslint.org/docs/rules/no-proto
  no-proto: 2,

  // disallow declaring the same variable more than once (recommended): http://eslint.org/docs/rules/no-redeclare
  no-redeclare: 2,

  // disallow use of assignment in return statement: http://eslint.org/docs/rules/no-return-assign
  no-return-assign: 2,

  // disallow use of javascript: urls.: http://eslint.org/docs/rules/no-script-url
  no-script-url: 2,

  // disallow comparisons where both sides are exactly the same: http://eslint.org/docs/rules/no-self-compare
  no-self-compare: 0, // TODO: consider, we have quite a much reflexivity tests

  // disallow use of the comma operator: http://eslint.org/docs/rules/no-sequences
  no-sequences: 2,

  // restrict what can be thrown as an exception: http://eslint.org/docs/rules/no-throw-literal
  no-throw-literal: 0,

  // disallow usage of expressions in statement position: http://eslint.org/docs/rules/no-unused-expressions
  no-unused-expressions: 2,

  // disallow unnecessary .call() and .apply(): http://eslint.org/docs/rules/no-useless-call
  no-useless-call: 2,

  // disallow use of the void operator: http://eslint.org/docs/rules/no-void
  no-void: 2,

  // disallow usage of configurable warning terms in comments - e.g. TODO or FIXME: http://eslint.org/docs/rules/no-warning-comments
  no-warning-comments: 0,

  // disallow use of the with statement: http://eslint.org/docs/rules/no-with
  no-with: 2,

  // require use of the second argument for parseInt(): http://eslint.org/docs/rules/radix
  radix: 2,

  // require declaration of all vars at the top of their containing scope: http://eslint.org/docs/rules/vars-on-top
  vars-on-top: 0,

  // require immediate function invocation to be wrapped in parentheses: http://eslint.org/docs/rules/wrap-iife
  wrap-iife: 2,

  // require or disallow Yoda conditions: http://eslint.org/docs/rules/yoda
  yoda: 2,




  // Strict Mode
  // controls location of Use Strict Directives: http://eslint.org/docs/rules/strict
  strict: [2, global],


  // Variables
  // enforce or disallow variable initializations at definition: http://eslint.org/docs/rules/init-declarations
  init-declarations: 0, // TODO: annotate?

  // disallow the catch clause parameter name being the same as a variable in the outer scope: http://eslint.org/docs/rules/no-catch-shadow
  no-catch-shadow: 2,

  // disallow deletion of variables (recommended): http://eslint.org/docs/rules/no-delete-var
  no-delete-var: 2,

  // disallow labels that share a name with a variable: http://eslint.org/docs/rules/no-label-var
  no-label-var: 2,

  // disallow shadowing of names such as arguments: http://eslint.org/docs/rules/no-shadow-restricted-names
  no-shadow-restricted-names: 2,

  // disallow declaration of variables already declared in the outer scope: http://eslint.org/docs/rules/no-shadow
  no-shadow: 2,

  // disallow use of undefined when initializing variables: http://eslint.org/docs/rules/no-undef-init
  no-undef-init: 2,

  // disallow use of undeclared variables unless mentioned in a /*global */ block (recommended): http://eslint.org/docs/rules/no-undef
  no-undef: 2,

  // disallow use of undefined variable: http://eslint.org/docs/rules/no-undefined
  no-undefined: 0,

  // disallow declaration of variables that are not used in the code (recommended): http://eslint.org/docs/rules/no-unused-vars
  no-unused-vars: 2,

  // disallow use of variables before they are defined: http://eslint.org/docs/rules/no-use-before-define
  no-use-before-define: 2,


  // Node.js
  // enforce return after a callback: http://eslint.org/docs/rules/callback-return
  callback-return: 2,

  // enforce error handling in callbacks: http://eslint.org/docs/rules/handle-callback-err
  handle-callback-err: 2,

  // disallow mixing regular variable and require declarations: http://eslint.org/docs/rules/no-mixed-requires
  no-mixed-requires: 2,

  // disallow use of new operator with the require function: http://eslint.org/docs/rules/no-new-require
  no-new-require: 2,

  // disallow string concatenation with __dirname and __filename: http://eslint.org/docs/rules/no-path-concat
  no-path-concat: 2,

  // disallow process.exit(): http://eslint.org/docs/rules/no-process-exit
  no-process-exit: 2,

  // restrict usage of specified node modules: http://eslint.org/docs/rules/no-restricted-modules
  no-restricted-modules: 2,

  // disallow use of synchronous methods: http://eslint.org/docs/rules/no-sync
  no-sync: 0,


  // Stylistic issues
  // enforce spacing inside array brackets: http://eslint.org/docs/rules/array-bracket-spacing
  array-bracket-spacing: 2,

  // disallow or enforce spaces inside of single line blocks: http://eslint.org/docs/rules/block-spacing
  block-spacing: 2,

  // enforce one true brace style: http://eslint.org/docs/rules/brace-style
  brace-style: [2, "1tbs", { "allowSingleLine": true }],

  // require camel case names: http://eslint.org/docs/rules/camelcase
  camelcase: 2,

  // enforce spacing before and after comma: http://eslint.org/docs/rules/comma-spacing
  comma-spacing: 2,

  // enforce one true comma style: http://eslint.org/docs/rules/comma-style
  comma-style: 2,

  // require or disallow padding inside computed properties: http://eslint.org/docs/rules/computed-property-spacing
  computed-property-spacing: 2,

  // enforce consistent naming when capturing the current execution context: http://eslint.org/docs/rules/consistent-this
  consistent-this: 0,

  // enforce newline at the end of file, with no multiple empty lines: http://eslint.org/docs/rules/eol-last
  eol-last: 2,

  // require function expressions to have a name: http://eslint.org/docs/rules/func-names
  func-names: 0,

  // enforce use of function declarations or expressions: http://eslint.org/docs/rules/func-style
  func-style: 0,

  // this option enforces minimum and maximum identifier lengths (variable names, property names etc.): http://eslint.org/docs/rules/id-length
  id-length: 0,

  // require identifiers to match the provided regular expression: http://eslint.org/docs/rules/id-match
  id-match: 2,

  // specify tab or space width for your code: http://eslint.org/docs/rules/indent
  indent: [2, 2, { SwitchCase: 1 }],

  // enforce spacing between keys and values in object literal properties: http://eslint.org/docs/rules/key-spacing
  key-spacing: 2,

  // enforce empty lines around comments: http://eslint.org/docs/rules/lines-around-comment
  lines-around-comment: 0,

  // disallow mixed 'LF' and 'CRLF' as linebreaks: http://eslint.org/docs/rules/linebreak-style
  linebreak-style: 2,

  // specify the maximum depth callbacks can be nested: http://eslint.org/docs/rules/max-nested-callbacks
  max-nested-callbacks: 2,

  // require a capital letter for constructors: http://eslint.org/docs/rules/new-cap
  new-cap: 2,

  // disallow the omission of parentheses when invoking a constructor with no arguments: http://eslint.org/docs/rules/new-parens
  new-parens: 2,

  // require or disallow an empty newline after variable declarations: http://eslint.org/docs/rules/newline-after-var
  newline-after-var: 0,

  // disallow use of the Array constructor: http://eslint.org/docs/rules/no-array-constructor
  no-array-constructor: 2,

  // disallow use of the continue statement: http://eslint.org/docs/rules/no-continue
  no-continue: 0,

  // disallow comments inline after code: http://eslint.org/docs/rules/no-inline-comments
  no-inline-comments: 0,

  // disallow if as the only statement in an else block: http://eslint.org/docs/rules/no-lonely-if
  no-lonely-if: 2,

  // disallow mixed spaces and tabs for indentation (recommended): http://eslint.org/docs/rules/no-mixed-spaces-and-tabs
  no-mixed-spaces-and-tabs: 2,

  // disallow multiple empty lines: http://eslint.org/docs/rules/no-multiple-empty-lines
  no-multiple-empty-lines: 2,

  // disallow nested ternary expressions: http://eslint.org/docs/rules/no-nested-ternary
  no-nested-ternary: 2,

  // disallow the use of the Object constructor: http://eslint.org/docs/rules/no-new-object
  no-new-object: 2,

  // disallow space between function identifier and application: http://eslint.org/docs/rules/no-spaced-func
  no-spaced-func: 2,

  // disallow the use of ternary operators: http://eslint.org/docs/rules/no-ternary
  no-ternary: 0,

  // disallow trailing whitespace at the end of lines: http://eslint.org/docs/rules/no-trailing-spaces
  no-trailing-spaces: 2,

  // disallow dangling underscores in identifiers: http://eslint.org/docs/rules/no-underscore-dangle
  no-underscore-dangle: 2,

  // disallow the use of Boolean literals in conditional expressions: http://eslint.org/docs/rules/no-unneeded-ternary
  no-unneeded-ternary: 2,

  // require or disallow padding inside curly braces: http://eslint.org/docs/rules/object-curly-spacing
  object-curly-spacing: [2, "always"],

  // require or disallow one variable declaration per function: http://eslint.org/docs/rules/one-var
  one-var: [2, never],

  // require assignment operator shorthand where possible or prohibit it entirely: http://eslint.org/docs/rules/operator-assignment
  operator-assignment: 2,

  // enforce operators to be placed before or after line breaks: http://eslint.org/docs/rules/operator-linebreak
  operator-linebreak: 2,

  // enforce padding within blocks: http://eslint.org/docs/rules/padded-blocks
  padded-blocks: 0,

  // require quotes around object literal property names: http://eslint.org/docs/rules/quote-props
  quote-props: [0, "as-needed"], // TODO: change me

  // specify whether backticks, double or single quotes should be used: http://eslint.org/docs/rules/quotes
  quotes: 2,

  // enforce spacing before and after semicolons: http://eslint.org/docs/rules/semi-spacing
  semi-spacing: 2,

  // require or disallow use of semicolons instead of ASI: http://eslint.org/docs/rules/semi
  semi: 2,

  // sort variables within the same declaration block: http://eslint.org/docs/rules/sort-vars
  sort-vars: 2,

  // require a space after certain keywords: http://eslint.org/docs/rules/space-after-keywords
  space-after-keywords: 2,

  // require or disallow a space before blocks: http://eslint.org/docs/rules/space-before-blocks
  space-before-blocks: 2,

  // require or disallow a space before function opening parenthesis: http://eslint.org/docs/rules/space-before-function-paren
  space-before-function-paren: [2, {"anonymous": "always", "named": "never"}],

  // require or disallow spaces inside parentheses: http://eslint.org/docs/rules/space-in-parens
  space-in-parens: 2,

  // require spaces around operators: http://eslint.org/docs/rules/space-infix-ops
  space-infix-ops: 2,

  // require a space after return, throw, and case: http://eslint.org/docs/rules/space-return-throw-case
  space-return-throw-case: 2,

  // require or disallow spaces before/after unary operators: http://eslint.org/docs/rules/space-unary-ops
  space-unary-ops: 2,

  // require or disallow a space immediately following the // or /* in a comment: http://eslint.org/docs/rules/spaced-comment
  spaced-comment: [2, always, { markers: ["/"] }],

  // require regex literals to be wrapped in parentheses: http://eslint.org/docs/rules/wrap-regex
  wrap-regex: 2,


  // ECMAScript 6
  // require parens in arrow function arguments: http://eslint.org/docs/rules/arrow-parens
  arrow-parens: 2,

  // require space before/after arrow function's arrow: http://eslint.org/docs/rules/arrow-spacing
  arrow-spacing: 2,

  // verify calls of super() in constructors: http://eslint.org/docs/rules/constructor-super
  constructor-super: 2,

  // enforce spacing around the * in generator functions: http://eslint.org/docs/rules/generator-star-spacing
  generator-star-spacing: 2,

  // disallow modifying variables of class declarations: http://eslint.org/docs/rules/no-class-assign
  no-class-assign: 2,

  // disallow modifying variables that are declared using const: http://eslint.org/docs/rules/no-const-assign
  no-const-assign: 2,

  // disallow duplicate name in class members: http://eslint.org/docs/rules/no-dupe-class-members
  no-dupe-class-members: 2,

  // disallow use of this/super before calling super() in constructors.: http://eslint.org/docs/rules/no-this-before-super
  no-this-before-super: 2,

  // require let or const instead of var: http://eslint.org/docs/rules/no-var
  no-var: 0,

  // require method and property shorthand syntax for object literals: http://eslint.org/docs/rules/object-shorthand
  object-shorthand: [2, "never"],

  // suggest using arrow functions as callbacks: http://eslint.org/docs/rules/prefer-arrow-callback
  prefer-arrow-callback: 0,

  // suggest using const declaration for variables that are never modified after declared: http://eslint.org/docs/rules/prefer-const
  prefer-const: 0,

  // suggest using the spread operator instead of .apply().: http://eslint.org/docs/rules/prefer-spread
  prefer-spread: 0,

  // suggest using Reflect methods where applicable: http://eslint.org/docs/rules/prefer-reflect
  prefer-reflect: 0,

  // suggest using template literals instead of strings concatenation: http://eslint.org/docs/rules/prefer-template
  prefer-template: 0,

  // disallow generator functions that do not have yield: http://eslint.org/docs/rules/require-yield
  require-yield: 2,
}}