root: true

env:
  node: true

parserOptions:
  ecmaVersion: 5
  sourceType: 'module'

extends: 'eslint:recommended'

rules:
  no-extra-parens: [2, "all", { conditionalAssign: false, returnAssign: false }]
  no-unexpected-multiline: 2
  # best practices
  block-scoped-var: 2
  curly: [2, "multi-line"]
  dot-location: [2, "property"]
  dot-notation: 1
  eqeqeq: [2, "smart"]
  guard-for-in: 1
  no-alert: 2
  no-caller: 2
  no-case-declarations: 2
  no-div-regex: 2
  no-eval: 2
  no-extend-native: 2
  no-extra-bind: 2
  no-floating-decimal: 2
  no-implied-eval: 2
  no-invalid-this: 2
  no-iterator: 2
  no-labels: 2
  no-lone-blocks: 2
  no-loop-func: 2
  no-multi-str: 2
  no-native-reassign: 2
  no-new-func: 2
  no-new-wrappers: 2
  no-new: 2
  no-octal-escape: 2
  no-proto: 2
  no-redeclare: 2
  no-return-assign: [2, "except-parens"]
  no-script-url: 2
  no-self-compare: 2
  no-sequences: 2
  no-throw-literal: 2
  no-unused-expressions: 2
  no-useless-call: 2
  no-with: 2
  radix: 2
  wrap-iife: [2, "inside"]
  yoda: [2, "never"]
  no-label-var: 2
  no-shadow-restricted-names: 2
  no-undef: 2
  no-undef-init: 2
  no-use-before-define: [2, "nofunc"]
  handle-callback-err: 2
  no-mixed-requires: 2
  array-bracket-spacing: 2
  brace-style: [2, "1tbs", { allowSingleLine: true }]
  comma-spacing: 2
  comma-style: 2
  computed-property-spacing: 2
  consistent-this: [2, "self"]
  eol-last: 2
  indent: [2, 2, { SwitchCase: 1, VariableDeclarator: 2 }]
  key-spacing: [2, { mode: minimum }]
  keyword-spacing: 2
  linebreak-style: [2, "unix"]
  max-depth: [2, 5]
  max-len: [2, 120, 4, { ignoreUrls: true, ignorePattern: "=\\s+/.+/" }]
  max-nested-callbacks: [2, 5]
  new-cap: 2
  new-parens: 2
  no-array-constructor: 2
  no-lonely-if: 2
  no-mixed-spaces-and-tabs: 2
  no-multiple-empty-lines: [2, max: 2]
  no-new-object: 2
  no-spaced-func: 2
  no-trailing-spaces: 2
  no-unneeded-ternary: 2
  operator-linebreak: 2
  quotes: [2, "single", "avoid-escape"]
  semi-spacing: 2
  semi: ["error", "never"]
  space-before-blocks: 2
  space-before-function-paren: [2, "always"]
  space-in-parens: 2
  space-infix-ops: [2, int32Hint: false]
  space-unary-ops: 2
  object-curly-spacing: [2, "always"]
  arrow-spacing: 2
  no-confusing-arrow: 2
  no-duplicate-imports: [2, { includeExports: true }]
  no-useless-computed-key: 2
  no-useless-rename: 2
