env:
  node: true
parser: "@typescript-eslint/parser"
parserOptions:
  project: [./tsconfig.json]
plugins: ["@typescript-eslint"]
extends:
  - eslint:recommended
  - plugin:@typescript-eslint/recommended
  - plugin:@typescript-eslint/recommended-requiring-type-checking
  - prettier
rules:
  block-scoped-var: error
  callback-return: error
  curly: [error, multi-line, consistent]
  dot-location: [error, property]
  eqeqeq: [error, smart]
  id-match: error
  linebreak-style: [error, unix]
  new-cap: error
  no-console: off
  no-debugger: error
  no-else-return: error
  no-eq-null: error
  no-eval: error
  no-fallthrough: error
  no-new-wrappers: error
  no-path-concat: error
  no-redeclare: error
  no-return-assign: error
  no-sequences: error
  no-template-curly-in-string: error
  no-trailing-spaces: error
  no-undef-init: error
  prefer-arrow-callback: error
  prefer-const: error
  prefer-destructuring: [warn, VariableDeclarator: {object: true}]
  radix: error
  semi: off
  valid-jsdoc: [error, requireReturn: false]
  no-useless-escape: error
  no-void: error
  no-var: error
  "@typescript-eslint/array-type": error
  "@typescript-eslint/consistent-type-assertions": error
  "@typescript-eslint/consistent-type-definitions": error
  no-duplicate-imports: off
  # "@typescript-eslint/consistent-type-imports": error # temporarily removed from eslint
  "@typescript-eslint/default-param-last": error
  dot-notation: off
  "@typescript-eslint/dot-notation": error
  "@typescript-eslint/no-empty-function": off
  "@typescript-eslint/no-empty-interface": off
  "@typescript-eslint/explicit-function-return-type": [error, allowExpressions: true]
  "@typescript-eslint/explicit-member-accessibility": [error, accessibility: no-public]
  "@typescript-eslint/no-extraneous-class": error
  no-invalid-this: off
  "@typescript-eslint/no-invalid-this": error
  "@typescript-eslint/no-misused-new": error
  "@typescript-eslint/no-shadow": warn
  "@typescript-eslint/no-unused-expressions": error
  "@typescript-eslint/no-unused-vars": [error, argsIgnorePattern: ^_]
  "@typescript-eslint/prefer-function-type": error
  "@typescript-eslint/prefer-includes": error
  "@typescript-eslint/prefer-readonly": error
  "@typescript-eslint/require-array-sort-compare": [error, ignoreStringArrays: true]
  "@typescript-eslint/unified-signatures": error
  "@typescript-eslint/no-unnecessary-condition": [error, allowConstantLoopConditions: true]
  "@typescript-eslint/no-var-requires": off
  "@typescript-eslint/restrict-template-expressions": off
  "@typescript-eslint/no-explicit-any": off
