{
	"ignores": [
		"*.config.js",
		"*.config.ts"
	],
	"rules": {
		"@typescript-eslint/ban-types": "off",
		"@typescript-eslint/brace-style": [
			"error",
			"stroustrup"
		],
		"@typescript-eslint/class-literal-property-style": [
			"error",
			"fields"
		],
		"@typescript-eslint/keyword-spacing": [
			"error",
			{
				"overrides": {
					"if": {
						"after": false
					},
					"for": {
						"after": false
					},
					"switch": {
						"after": false
					},
					"while": {
						"after": false
					}
				}
			}
		],
		"@typescript-eslint/member-ordering": [
			"error",
			{
				"default": [
					"field",
					"constructor",
					"get",
					"set",
					"method"
				]
			}
		],
		"@typescript-eslint/naming-convention": [
			"error",
			{
				"selector": "variable",
				"modifiers": ["const", "global"],
				"format": ["camelCase", "UPPER_CASE"],
				"filter": {
					"regex": "^(__filename|__dirname)$",
					"match": false
				}
			},
			{
				"selector": "variable",
				"format": ["camelCase"],
				"filter": {
					"regex": "^(__filename|__dirname)$",
					"match": false
				}
			}
		],
		"@typescript-eslint/no-confusing-void-expression": "off",
		"@typescript-eslint/no-dynamic-delete": "off",
		"@typescript-eslint/no-empty-function": [
			"error",
			{
				"allow": [
					"arrowFunctions"
				]
			}
		],
		"@typescript-eslint/no-inferrable-types": "off",
		"@typescript-eslint/no-namespace": "off",
		"@typescript-eslint/object-curly-spacing": [
			"error",
			"always"
		],
		"@typescript-eslint/parameter-properties": "off",
		"@typescript-eslint/prefer-nullish-coalescing": [
			"error",
			{
				"ignoreConditionalTests": true
			}
		],
		"@typescript-eslint/prefer-promise-reject-errors": "off",
		"@typescript-eslint/return-await": "off",
		"arrow-parens": [
			"error",
			"always"
		],
		"capitalized-comments": "off",
		"complexity": "off",
		"default-case": "off",
		"import/extensions":  [
			"error",
			"never"
		],
		"import/order": [
			"error",
			{
				"groups": [
					"builtin",
					"external",
					"internal",
					"parent",
					"sibling",
					"index",
					"object"
				],
				"alphabetize": {
					"order": "asc",
					"caseInsensitive": true
				}
			}
		],
		"max-depth": [
			"error",
			8
		],
		"max-params": [
			"error",
			12
		],
		"no-await-in-loop": "off",
		"no-else-return": "off",
		"no-lonely-if": "off",
		"no-negated-condition": "off",
		"object-curly-newline": "off",
		"object-shorthand": "off",
		"one-var": [
			"error",
			"never"
		],
		"unicorn/empty-brace-spaces": "off",
		"unicorn/no-array-callback-reference": "off",
		"unicorn/no-length-as-slice-end": "off",
		"unicorn/no-object-as-default-parameter": "off",
		"unicorn/prefer-json-parse-buffer": "off",
		"unicorn/prefer-module": "off",
		"unicorn/prefer-node-protocol": "off",
		"unicorn/prefer-switch": "off",
		"unicorn/prefer-ternary": "off",
		"unicorn/prevent-abbreviations": [
			"error",
			{
				"replacements": {
					"arg": false,
					"args": false,
					"dir": false,
					"err": false,
					"fn": false,
					"func": false,
					"i": false,
					"j": false,
					"mod": false,
					"num": false,
					"pkg": false,
					"str": false,
					"temp": false
				}
			}
		]
	}
}
