{
    "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": 2018,
      "sourceType": "module"
    },
    "ignorePatterns": [
      "dist"
    ],
    "rules": {
      "quotes": ["warn", "single"],
      "indent": ["warn", 2, { "SwitchCase": 1 }],
      "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", 140],
      "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}],
      "@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"]
    }
  }
  