env:
  node:     true
  browser:  false

plugins:
  - nodeca

rules:
  block-scoped-var:     2
  brace-style:          [ 2, '1tbs', { allowSingleLine: true } ]
  comma-spacing:        2
  comma-style:          2
  consistent-this:      [ 2, self ]
  consistent-return:    2
  curly:                2
  # default-case:         2
  dot-notation:         2
  eol-last:             2
  eqeqeq:               2
  guard-for-in:         2
  handle-callback-err:  2
  max-depth:            [ 1, 6 ]
  max-nested-callbacks: [ 1, 4 ]
  # 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-comma-dangle:      2
  no-cond-assign:       2
  no-console:           1
  no-constant-condition: 2
  no-control-regex:     2
  no-debugger:          2
  no-delete-var:        2
  no-dupe-keys:         2
  no-div-regex:         2
  no-empty:             2
  no-empty-class:       2
  no-empty-label:       2
  no-else-return:       2
  no-eq-null:           2
  no-ex-assign:         2
  no-extend-native:     2
  no-extra-bind:        2
  no-extra-boolean-cast: 2
  no-extra-semi:        2
  no-extra-strict:      2
  no-eval:              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-label-var:         2
  no-labels:            2
  no-lone-blocks:       2
  no-lonely-if:         2
  no-loop-func:         2
  no-mixed-requires:    2
  no-mixed-spaces-and-tabs: 2
  no-multi-str:         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-path-concat:       2
  no-redeclare:         2
  no-regex-spaces:      2
  no-reserved-keys:     2
  no-return-assign:     2
  no-script-url:        2
  no-sequences:         2
  no-shadow:            2
  no-shadow-restricted-names: 2
  no-space-before-semi: 2
  no-sparse-arrays:     2
  no-trailing-spaces:   2
  no-undef:             2
  no-undef-init:        2
  no-undefined:         2
  no-unreachable:       2
  no-unused-expressions: 2
  no-unused-vars:       2
  no-use-before-define: 2
  no-with:              2
  no-wrap-func:         2
  quotes:               [ 2, single, avoid-escape ]
  radix:                2
  semi:                 2
  space-after-keywords: [ 2, always, , { "checkFunctionKeyword": true } ]
  space-before-blocks:  2
  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:  [ 2, always, { exceptions: [ '/' ] } ]
  strict:               2
  use-isnan:            2
  yoda:                 2
  valid-typeof:         2

  #
  # Our custom rules
  #
  nodeca/indent:                [ 2, spaces, 2 ]