env:
  browser: true
extends: "eslint:recommended"
rules:
  # key: 0 = allow, 1 = warn, 2 = error

  # Possible Errors
  no-await-in-loop: 1
  no-console: 1
  no-extra-parens: [1, 'all']
  no-template-curly-in-string: 0

  # Best Practices
  accessor-pairs: 0
  array-callback-return: 0
  block-scoped-var: 1
  class-methods-use-this: 0
  complexity: 0
  consistent-return: 0
  curly: [1, 'all']
  default-case: 1
  dot-location: [1, 'property']
  dot-notation: 0
  eqeqeq: 1
  guard-for-in: 0
  max-classes-per-file: 0
  no-alert: 1
  no-caller: 1
  no-div-regex: 1
  no-else-return: 0
  no-empty-function: 1
  no-eq-null: 1
  no-eval: 0
  no-extend-native: 0
  no-extra-bind: 0
  no-extra-label: 1
  no-floating-decimal: 1
  no-implicit-coercion: 1
  no-implied-eval: 1
  no-invalid-this: 1
  no-iterator: 1
  no-labels: 0
  no-lone-blocks: 1
  no-loop-func: 1
  no-magic-numbers: 0
  no-multi-spaces: 1
  no-multi-str: 1
  no-new: 0
  no-new-func: 1
  no-new-wrappers: 1
  no-octal-escape: 1
  no-param-reassign: 1
  no-proto: 1
  no-restricted-globals: 1
  no-restricted-properties: 0
  no-return-assign: 1
  no-return-await: 1
  no-script-url: 1
  no-self-compare: 1
  no-sequences: 1
  no-throw-literal: 1
  no-unmodified-loop-condition: 1
  no-unused-expressions: 1
  no-useless-call: 1
  no-useless-concat: 1
  no-useless-return: 1
  no-void: 1
  no-warning-comments: 0
  prefer-named-capture-group: 0
  prefer-promise-reject-errors: 1
  radix: 1
  require-await: 1
  require-unicode-regexp: 0
  vars-on-top: 1
  wrap-iife: 1
  yoda: 1

  # Strict Mode
  strict: [1, 'safe']

  # Variables
  init-declarations: 0
  no-label-var: 1
  no-implicit-globals: 0
  no-shadow: 1
  no-undef-init: 1
  no-undefined: 1
  no-use-before-define: 1

  # Stylistic Issues
  array-bracket-newline: 0
  array-bracket-spacing: [1, 'never']
  array-element-newline: 0
  block-spacing: [1, 'always']
  brace-style: [1, '1tbs']
  camelcase: 1
  capitalized-comments: 0
  comma-dangle: [1, 'never']
  comma-spacing: [1, { "before": false, "after": true }]
  comma-style: 1
  computed-property-spacing: [1, 'never']
  consistent-this: [1, 'that']
  eol-last: 1
  func-call-spacing: [1, 'never']
  func-name-matching: [1, 'always']
  func-names: 0
  func-style: [1, 'expression']
  function-paren-newline: [1, 'never']
  id-blacklist: 0
  id-length: 0
  id-match: 0
  implicit-arrow-linebreak: 0
  indent: [1, 4]
  jsx-quotes: 0
  key-spacing: 1
  keyword-spacing: 1
  line-comment-position: [1, 'above']
  linebreak-style: [1, 'unix']
  lines-around-comment: 0
  lines-between-class-members: [1, 'always', { exceptAfterSingleLine: true }]
  max-depth: [1, 4]
  max-len: 0
  max-lines: 0
  max-lines-per-function: 0
  max-nested-callbacks: 0
  max-params: [1, 4]
  max-statements: 0
  max-statements-per-line: [1, { max: 1 }]
  multiline-comment-style: 0
  multiline-ternary: 0
  new-cap: 1
  new-parens: 1
  newline-per-chained-call: 1
  no-array-constructor: 0
  no-bitwise: 0
  no-continue: 0
  no-inline-comments: 0
  no-lonely-if: 1
  no-mixed-operators: 0
  no-multi-assign: 1
  no-multiple-empty-lines: 1
  no-negated-condition: 0
  no-nested-ternary: 1
  no-new-object: 0
  no-plusplus: 1
  no-restricted-syntax: 0
  no-tabs: 1
  no-ternary: 0
  no-trailing-spaces: 1
  no-underscore-dangle: 1
  no-unneeded-ternary: 1
  no-whitespace-before-property: 1
  nonblock-statement-body-position: 1
  object-curly-newline: 0
  object-curly-spacing: [1, 'always']
  object-property-newline: 0
  one-var: [1, 'consecutive']
  one-var-declaration-per-line: [1, 'always']
  operator-assignment: [1, 'always']
  operator-linebreak: 0
  padded-blocks: [1, 'never']
  padding-line-between-statements: 0
  prefer-object-spread: 0
  quote-props: 0
  quotes: [1, 'single']
  semi: [1, 'always']
  semi-spacing: [1, { before: false, after: true }]
  semi-style: [1, 'last']
  sort-keys: 0
  sort-vars: 0
  space-before-blocks: [1, 'always']
  space-before-function-paren: [1, 'always']
  space-in-parens: [1, 'never']
  space-infix-ops: 0
  space-unary-ops: [1, { words: true, nonwords: false }]
  spaced-comment: [1, 'always', { markers: ["global", "="] }]
  switch-colon-spacing: [1, { after: true, before: false }]
  template-tag-spacing: [1, 'always']
  unicode-bom: [1, 'never']
  wrap-regex: 1
