parser: '@typescript-eslint/parser'
parserOptions:
  project: tsconfig.json
extends:
  - 'plugin:@typescript-eslint/all'
plugins:
  - '@typescript-eslint'
env:
  browser: true
  es6: true
  node: true
  commonjs: true
rules:
  '@typescript-eslint/semi':
  - error
  - never
  '@typescript-eslint/indent':
  - error
  - 4
  '@typescript-eslint/explicit-member-accessibility':
  - error
  - accessibility: no-public
    overrides:
      parameterProperties: explicit
  '@typescript-eslint/no-require-imports': off
  '@typescript-eslint/no-parameter-properties': off
  '@typescript-eslint/explicit-function-return-type': off
  '@typescript-eslint/no-explicit-any': off
  '@typescript-eslint/no-magic-numbers': off
  '@typescript-eslint/member-delimiter-style': off
  '@typescript-eslint/promise-function-async': off
  '@typescript-eslint/no-unnecessary-type-assertion': off
  '@typescript-eslint/require-array-sort-compare': off
  '@typescript-eslint/no-floating-promises': off
  '@typescript-eslint/prefer-readonly': off
  '@typescript-eslint/require-await': off
  '@typescript-eslint/strict-boolean-expressions': off
  '@typescript-eslint/no-misused-promises': off
  '@typescript-eslint/typedef': off
  '@typescript-eslint/no-use-before-define':
  - error
  - classes: false
  no-duplicate-imports: error
  array-bracket-spacing:
  - error
  - never
  block-scoped-var: error
  brace-style: off
  '@typescript-eslint/brace-style':
  - error
  - 1tbs
  - allowSingleLine: true
  computed-property-spacing:
  - error
  - never
  comma-dangle:
  - error
  - always-multiline
  curly: error
  eol-last: error
  eqeqeq:
  - error
  - smart
  linebreak-style:
  - error
  - unix
  max-depth:
  - 1
  - 5
  max-statements:
  - 1
  - 80
  no-multiple-empty-lines: error
  no-mixed-spaces-and-tabs: error
  no-trailing-spaces: error
  '@typescript-eslint/no-unused-vars':
    - error
    - vars: all
      args: after-used
      argsIgnorePattern: ^_
  no-undef: error
  no-var: error
  object-curly-spacing:
  - error
  - always
  quote-props:
  - warn
  - as-needed
  - keywords: true
    numbers: true
  quotes: off
  '@typescript-eslint/quotes':
  - error
  - single
  - allowTemplateLiterals: true
  '@typescript-eslint/no-non-null-assertion': off
  '@typescript-eslint/no-unnecessary-condition': off
  '@typescript-eslint/no-untyped-public-signature': off # bugs out on constructors
  '@typescript-eslint/restrict-template-expressions': off
  '@typescript-eslint/no-dynamic-delete': off
  '@typescript-eslint/prefer-nullish-coalescing': off
  '@typescript-eslint/prefer-readonly-parameter-types': off
  '@typescript-eslint/no-unsafe-member-access': off
  '@typescript-eslint/no-unsafe-call': off
  '@typescript-eslint/no-unsafe-return': off
  '@typescript-eslint/no-base-to-string': off # broken in typescript-eslint
