env:
  node:     true
  browser:  false

plugins:
    - nodeca

rules:
  block-scoped-var:       2
  brace-style:            [ 2, '1tbs', { "allowSingleLine": true } ]
  comma-dangle:           2
  comma-spacing:          2
  comma-style:            2
  consistent-return:      2
  consistent-this:        [ 2, self ]
  curly:                  [ 2, all ]
  # default-case:           2
  # dot-notation:           [ 2, { allowKeywords: true } ]
  eol-last:               2
  eqeqeq:                 2
  func-style:             [ 2, declaration ]
  handle-callback-err:    2
  # key-spacing:            [ 2, { "align": "value" } ]
  max-depth:              [ 1, 6 ]
  max-nested-callbacks:   [ 1, 5 ]
  # string can exceed 80 chars, but should not overflow github website :)
  max-len:                [ 2, 120, 1000 ]
  new-cap:                2
  new-parens:             2
  no-alert:               2
  no-array-constructor:   2
  # no-bitwise:             2
  no-caller:              2
  no-catch-shadow:        2
  no-cond-assign:         2
  no-console:             1
  no-constant-condition:   2
  no-control-regex:       2
  no-div-regex:           2
  no-dupe-args:           2
  no-dupe-keys:           2
  no-duplicate-case:      2
  no-else-return:         2
  # no-empty:               1
  no-empty-class:         2
  no-empty-label:         2
  no-eq-null:             2
  no-eval:                2
  no-ex-assign:           2
  no-extend-native:       2
  no-extra-bind:          2
  no-extra-boolean-cast:  2
  no-extra-semi:          2
  no-fallthrough:         2
  no-floating-decimal:    2
  no-func-assign:         2
  no-implied-eval:        2
  no-inner-declarations:  2
  no-invalid-regexp:      2
  no-irregular-whitespace: 2
  no-iterator:            2
  no-label-var:           2
  no-lone-blocks:         1
  no-lonely-if:           2
  no-loop-func:           2
  no-mixed-spaces-and-tabs: 2
  no-native-reassign:     2
  no-negated-in-lhs:      2
  no-new:                 2
  no-new-func:            2
  no-new-object:          2
  no-new-require:         2
  no-new-wrappers:        2
  no-obj-calls:           2
  no-octal:               2
  no-octal-escape:        2
  no-proto:               2
  no-redeclare:           2
  # no-regex-spaces:        2
  no-reserved-keys:       2
  no-return-assign:       2
  no-self-compare:        2
  no-sequences:           2
  # no-shadow:              2
  no-shadow-restricted-names: 2
  no-sparse-arrays:       2
  no-path-concat:         2
  no-throw-literal:       2
  no-trailing-spaces:     2
  no-undef:               2
  no-undef-init:          2
  no-undefined:           2
  no-unreachable:         2
  no-unused-expressions:  2
  no-use-before-define:   2
  operator-assignment:    1
  semi:                   2
  semi-spacing:           2
  space-after-keywords:   2
  space-before-blocks:    2
  space-before-function-paren: [ 2, { "anonymous": "always", "named": "never" } ]
  space-in-brackets:      [ 2, always, { propertyName: false } ]
  space-in-parens:        [ 2, never ]
  space-infix-ops:        2
  space-return-throw-case: 2
  space-unary-ops:        2
  spaced-line-comment:    [ 1, always, { exceptions: [ '/', '=' ] } ]
  strict:                 [ 2, global ]
  quotes:                 [ 2, single, avoid-escape ]
  quote-props:            [ 1, 'as-needed' ]
  radix:                  2
  use-isnan:              2
  valid-typeof:           2
  yoda:                   [ 2, never, { "exceptRange": true } ]



  #
  # Our custom rules from plugin
  #
  nodeca/no-lodash-aliases:   2
  nodeca/no-async-aliases:    2
  nodeca/indent:              [2, spaces, 2]
  nodeca/no-wire-anonymous:   1