{
  "parser": "@typescript-eslint/parser",
  "plugins": [
    "@typescript-eslint",
    "prettier"
  ],
  "env": {
    "es6": true,
    "node": true,
    "browser": true
  },
  "root": true,
  "extends": [
    "airbnb-base",
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "prettier/@typescript-eslint"
  ],
  "rules": {
    "linebreak-style": [
      "error",
      "unix"
    ],
    "arrow-parens": [
      "error",
      "as-needed"
    ],
    "no-param-reassign": [
      "error",
      {
        "props": false
      }
    ],
    "func-style": [
      "error",
      "declaration",
      {
        "allowArrowFunctions": true
      }
    ],
    "no-use-before-define": [
      "error",
      {
        "functions": false
      }
    ],
    "@typescript-eslint/no-use-before-define": [
      "error",
      {
        "functions": false
      }
    ],
    "import/prefer-default-export": "off",
    "lines-between-class-members": [
      "error",
      "always",
      {
        "exceptAfterSingleLine": true
      }
    ],
    "import/extensions": [
      "error",
      "always",
      {
        "js": "ignorePackages",
        "ts": "never"
      }
    ]
  },
  "settings": {
    "import/resolver": {
      "node": {
        "extensions": [
          ".ts",
          ".js"
        ]
      }
    }
  }
}