{
	"env": {
		"browser": true,
		"es6": true,
		"node": true
	},
	"parser": "@typescript-eslint/parser",
	"parserOptions": {
		"ecmaVersion": 2020,
		"sourceType": "module"
	},
	"plugins": ["@typescript-eslint", "prefer-arrow", "jsdoc", "import"],
	"extends": [
		"eslint:recommended",
		"plugin:@typescript-eslint/eslint-recommended",
		"plugin:@typescript-eslint/recommended"
	],
	"settings": {
		"import/core-modules": ["axios"]
	},
	"rules": {
		"lines-between-class-members": [
			"off",
			"always",
			{"exceptAfterSingleLine": true}
		],
		"strict": "error",
		"object-curly-spacing": ["off", "always"],
		"import/prefer-default-export": "off",
		"@typescript-eslint/no-unused-vars": "error",
		"import/order": [
			"warn",
			{
				"groups": ["builtin", "external", "parent", "sibling", "index"],
				"newlines-between": "always"
			}
		],
		"class-methods-use-this": "off",
		"no-useless-constructor": "off",
		"no-empty-function": "off",
		"newline-before-return": "off",
		"max-len": ["off", 140],
		"@typescript-eslint/no-unsafe-return": "off",
		"@typescript-eslint/no-unsafe-call": "off",
		"@typescript-eslint/no-unsafe-member-access": "off",
		"@typescript-eslint/no-unsafe-assignment": "off",
		"@typescript-eslint/explicit-module-boundary-types": "off",
		"new-cap": "off",
		"@typescript-eslint/no-empty-function": "error",
		"@typescript-eslint/no-useless-constructor": "error",
		"@typescript-eslint/adjacent-overload-signatures": "error",
		"@typescript-eslint/array-type": "off",
		"@typescript-eslint/ban-types": "off",
		"@typescript-eslint/explicit-member-accessibility": [
			"off",
			{
				"overrides": {
					"constructors": "off"
				}
			}
		],
		"indent": [
			"off",
			2,
			{
				"FunctionDeclaration": {
					"parameters": "first"
				},
				"SwitchCase": 1
			}
		],
		"@typescript-eslint/interface-name-prefix": "off",
		"@typescript-eslint/no-empty-interface": "off",
		"@typescript-eslint/no-explicit-any": "warn",
		"@typescript-eslint/no-misused-new": "error",
		"@typescript-eslint/no-namespace": "error",
		"@typescript-eslint/no-parameter-properties": "off",
		"@typescript-eslint/consistent-type-assertions": "error",
		"@typescript-eslint/no-use-before-declare": "off",
		"@typescript-eslint/no-var-requires": "off",
		"@typescript-eslint/prefer-for-of": "off",
		"@typescript-eslint/prefer-function-type": "off",
		"@typescript-eslint/prefer-namespace-keyword": "warn",
		"@typescript-eslint/type-annotation-spacing": "off",
		"@typescript-eslint/unified-signatures": "off",
		"no-unused-param": "off",
		"semi": ["error", "always"],
		"arrow-body-style": "off",
		"arrow-parens": ["off", "as-needed"],
		"complexity": "off",
		"constructor-super": "off",
		"curly": ["warn", "all"],
		"dot-notation": "off",
		"eol-last": ["warn", "always"],
		"guard-for-in": "warn",
		"max-classes-per-file": "off",
		"new-parens": "warn",
		"no-bitwise": "error",
		"no-caller": "error",
		"no-cond-assign": "error",
		"no-console": "error",
		"no-debugger": "error",
		"no-empty": "error",
		"no-empty-functions": "off",
		"no-fallthrough": "off",
		"no-invalid-this": "off",
		"@typescript-eslint/ban-ts-comment": "off",
		"no-multiple-empty-lines": [
			"error",
			{
				"max": 1
			}
		],
		"no-new-wrappers": "error",
		"no-return-await": "warn",
		"no-throw-literal": "error",
		"no-undef-init": "off",
		"no-unsafe-finally": "error",
		"no-unused-labels": "error",
		"no-var": "error",
		"object-shorthand": "error",
		"one-var": "off",
		"prefer-const": "error",
		"quote-props": ["error", "consistent-as-needed"],
		"radix": "error",
		"some-rule": "off",
		"space-before-function-paren": [
			"warn",
			{
				"anonymous": "never",
				"asyncArrow": "always",
				"named": "never"
			}
		],
		"use-isnan": "off",
		"valid-typeof": "off",
		"quotes": ["warn", "single"],
		"comma-dangle": ["warn", "always-multiline"],
		"no-useless-catch": "warn",
		"prefer-arrow/prefer-arrow-functions": "off",
		"spaced-comment": ["error", "always"],
		"jsdoc/check-indentation": 1,
		"jsdoc/check-alignment": 1,
		"no-underscore-dangle": [
			"error",
			{
				"allow": ["_id"]
			}
		],
		"@typescript-eslint/await-thenable": "off",
		"@typescript-eslint/member-ordering": "error"
	},
	"overrides": [
		{
			"files": ["**/**.spec.ts"],
			"rules": {
				"@typescript-eslint/unbound-method": "off",
				"@typescript-eslint/explicit-function-return-type": "off"
			}
		},
		{
			"files": ["**/*.js"],
			"rules": {
				"spaced-comment": "off"
			}
		}
	]
}
