{
	"root": true,
	"env": { "browser": true },
	"extends": [
		"eslint:recommended",
		"plugin:@typescript-eslint/recommended",
		"plugin:prettier/recommended"
	],
	"plugins": ["@typescript-eslint"],
	"parser": "@typescript-eslint/parser",
	"ignorePatterns" : [
		"dist/**",
		"node_modules/**",
		"build/**"
	],
	"parserOptions": {
		"ecmaVersion": 2021,
		"sourceType": "script",
		"requireConfigFile": false
	},
	"settings": {
		"import/resolver": {
			"node": {
				"extensions": [".js", ".jsx", ".ts", ".tsx"]
			}
		}
	},
	"overrides": [
		{
			"files": ["*.mjs", "*.ts", "*.d.ts"],
			"parserOptions": { "sourceType": "module" }
		},
		{
			"files": ["*.js"],
			"rules": {
				"@typescript-eslint/no-var-requires": "off"
			}
		}
	],
	"rules": {
		// Required for dependency injection
		"no-useless-constructor": "off",
		"no-empty-function": "off",

		"@typescript-eslint/no-unused-vars": [
			"error",
			{
				"varsIgnorePattern": "^_.+$",
				"argsIgnorePattern": "^_.+$"
			}
		],

		"prettier/prettier": [
			"error",
			{
				"singleQuote": true,
				"parser": "typescript",
				"printWidth": 120
			}
		],

		"@typescript-eslint/no-explicit-any": "off",

		// Annoying shit
		"no-undef": "off",
		"no-redeclare": "off",
		"no-await-in-loop":"off",
		"no-constant-condition":"off",
		"strict": "off",
		"jsx-a11y/click-events-have-key-events": "off",
		"jsx-a11y/no-static-element-interactions": "off"
	}
}
