---
parser: "@typescript-eslint/parser"
extends:
  - eslint:recommended
  - plugin:@typescript-eslint/eslint-recommended
  - plugin:@typescript-eslint/recommended # uses the recommended rules from the @typescript-eslint/eslint-plugin
parserOptions:
  ecmaVersion: 2023
  sourceType: module
ignorePatterns:
  - dist
rules:
  quotes:
    - warn
    - single
    - avoidEscape: true
  semi:
    - "off"
  comma-dangle:
    - warn
    - always-multiline
  dot-notation: "off"
  eqeqeq: warn
  curly:
    - warn
    - all
  brace-style:
    - warn
  prefer-arrow-callback:
    - warn
  max-len:
    - warn
    - code: 100
      tabWidth: 2
      ignoreUrls: true
      ignoreStrings: true
      ignoreTemplateLiterals: true
      ignoreRegExpLiterals: true
  no-console:
    - warn # use the provided Homebridge log method instead
  no-non-null-assertion:
    - "off"
  comma-spacing:
    - error
  no-multi-spaces:
    - warn
    - ignoreEOLComments: true
  no-trailing-spaces:
    - warn
  lines-between-class-members:
    - warn
    - always
    - exceptAfterSingleLine: true
  no-unused-vars: "off"
  "@typescript-eslint/no-unused-vars": "error"
  "@typescript-eslint/explicit-function-return-type": "off"
  "@typescript-eslint/no-non-null-assertion": "off"
  "@typescript-eslint/explicit-module-boundary-types": "off"
  "@typescript-eslint/semi":
    - warn
  "@typescript-eslint/member-delimiter-style":
    - warn
