{
	"extends": [
		"eslint:recommended",
		"plugin:node/recommended"
	],
	"plugins": [
		"node",
		"@typescript-eslint"
	],
	"rules": {
		"block-scoped-var": "error",
		"eqeqeq": "error",
		"no-var": "error",
		"prefer-const": "error",
		"prefer-arrow-callback": "error",
		"no-trailing-spaces": "error",
		"quotes": [
			"warn",
			"double",
			{
				"avoidEscape": true
			}
		],
		"no-restricted-properties": [
			"error",
			{
				"object": "describe",
				"property": "only"
			},
			{
				"object": "it",
				"property": "only"
			}
		],
		"object-curly-newline": [
			"warn",
			{
				"ObjectPattern": {
					"multiline": true,
					"minProperties": 2
				},
				"ImportDeclaration": {
					"multiline": true,
					"minProperties": 3
				},
				"ExportDeclaration": {
					"multiline": true,
					"minProperties": 3
				}
			}
		]
	},
	"overrides": [
		{
			"files": [
				"**/*.ts",
				"**/*.tsx"
			],
			"parser": "@typescript-eslint/parser",
			"extends": [
				"plugin:@typescript-eslint/recommended"
			],
			"rules": {
				"no-empty": [
					"warn",
					{
						"allowEmptyCatch": true
					}
				],
				"brace-style": "off",
				"@typescript-eslint/brace-style": [
					"warn"
				],
				"@typescript-eslint/no-non-null-assertion": "off",
				"@typescript-eslint/no-use-before-define": "off",
				"@typescript-eslint/no-warning-comments": "off",
				"@typescript-eslint/no-empty-function": "off",
				"@typescript-eslint/no-var-requires": "off",
				"@typescript-eslint/explicit-function-return-type": "off",
				"@typescript-eslint/explicit-module-boundary-types": "off",
				"@typescript-eslint/ban-types": "off",
				"@typescript-eslint/camelcase": "off",
				"@typescript-eslint/no-empty-interface": "off",
				"node/no-missing-import": "off",
				"node/no-empty-function": "off",
				"node/no-unpublished-import": "off",
				"node/no-unsupported-features/es-syntax": "off",
				"node/no-missing-require": "off",
				"node/shebang": "off",
				"no-dupe-class-members": "off",
				"require-atomic-updates": "off",
				"node/no-extraneous-import": "off",
				/* https://eslint.org/docs/rules/no-process-exit */
				"no-process-exit": "error",
				"indent": [
					"error",
					"tab",
					{
						"SwitchCase": 1
					}
				],
				"semi": [
					"error",
					"always"
				]
			},
			"parserOptions": {
				"ecmaVersion": 2020,
				"sourceType": "module"
			}
		}
	],
	"ignorePatterns": [
		"src/shared/*",
		"build/*"
	]
}