env:
  node: true
  es6: true

parserOptions:
  ecmaVersion: 2015

ignorePatterns:
  - coverage/
  - dist/
  - rollup.config.js

rules:
  accessor-pairs:         2
  array-bracket-spacing:  [ 2, "always", { "singleValue": true, "objectsInArrays": true, "arraysInArrays": true } ]
  block-scoped-var:       2
  block-spacing:          2
  #brace-style:            [ 2, '1tbs', { "allowSingleLine": true } ]
  #callback-return:        2
  comma-dangle:           2
  comma-spacing:          2
  comma-style:            2
  computed-property-spacing: [ 2, never ]
  #consistent-return:      2
  consistent-this:        [ 2, self ]
  curly:                  [ 2, 'multi-line' ]
  # dot-notation:           [ 2, { allowKeywords: true } ]
  dot-location:           [ 2, 'property' ]
  eol-last:               2
  eqeqeq:                 2
  # func-style:             [ 2, declaration ]
  guard-for-in:           2
  handle-callback-err:    2
  indent:                 [ 2, 2, { VariableDeclarator: { var: 2, let: 2, const: 3 }, SwitchCase: 1, ignoreComments: true, MemberExpression: off, ignoredNodes: ["ConditionalExpression"] } ]
  # key-spacing:            [ 2, { "align": "value" } ]
  keyword-spacing:        2
  linebreak-style:        2
  #max-depth:              [ 1, 3 ]
  max-nested-callbacks:   [ 1, 7 ]
  # 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-case-declarations:   2
  no-catch-shadow:        2
  no-cond-assign:         2
  no-console:             1
  no-constant-condition:  2
  no-control-regex:       2
  no-debugger:            1
  no-delete-var:          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-character-class: 2
  no-empty-pattern:       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-labels:              2
  no-label-var:           2
  no-lone-blocks:         1
  no-lonely-if:           2
  no-loop-func:           2
  no-mixed-requires:      [ 1, { "grouping": true } ]
  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-path-concat:         2
  no-proto:               2
  no-redeclare:           2
  # no-regex-spaces:        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-throw-literal:       2
  no-trailing-spaces:     2
  no-undef:               2
  no-undef-init:          2
  no-undefined:           2
  no-unexpected-multiline: 2
  no-unreachable:         2
  no-unused-expressions:  2
  no-unused-vars:         2
  no-use-before-define:   2
  no-void:                2
  no-with:                2
  object-curly-spacing:   [ 2, always, { "objectsInObjects": true, "arraysInObjects": true } ]
  operator-assignment:    1
  semi:                   2
  semi-spacing:           2
  space-before-blocks:    2
  space-before-function-paren: [ 2, { "anonymous": "always", "named": "never" } ]
  space-in-parens:        [ 2, never ]
  space-infix-ops:        [ 2, { int32Hint: true } ]
  space-unary-ops:        2
  #spaced-comment:         [ 1, always, { exceptions: [ '/', '=' ] } ]
  strict:                 [ 2, global ]
  quotes:                 [ 2, single, avoid-escape ]
  quote-props:            [ 1, 'as-needed', { "keywords": true } ]
  radix:                  2
  use-isnan:              2
  valid-typeof:           2
  yoda:                   [ 2, never, { "exceptRange": true } ]
