{
	"ignorePatterns": [
		"src/**"
	],
	"extends": [
		"eslint:recommended",
		"plugin:node/recommended"
	],
	"parserOptions": {
		"ecmaVersion": 2022
	},
	"overrides": [
		{
			"files": [
				"**/*.test.js"
			],
			"env": {
				"jest": true
			},
			"plugins": ["jest"],
			"rules": {
				"jest/no-disabled-tests": "warn",
				"jest/no-focused-tests": "error",
				"jest/no-identical-title": "error",
				"jest/prefer-to-have-length": "warn",
				"jest/valid-expect": "error"
			}
		}
	],
	"env": {
		"node": true,
		"es6": true
	},
	"rules": {
		"arrow-parens": ["error", "always"],
		"no-trailing-spaces": [
			"error",
			{
				"skipBlankLines": true
			}
		],
		"indent": [
			"error",
			"tab",
			{
				"SwitchCase": 1
			}
		],
		"operator-linebreak": [
			"error",
			"after",
			{
				"overrides": {
				"?": "before",
				":": "before"
				}
			}
		],
		"max-len": ["error", 110],
		"quotes": [
			"error",
			"single"
		],
		"semi": [
			"error",
			"always"
		],
		"no-multiple-empty-lines": ["error", { "max": 3, "maxEOF": 1, "maxBOF": 1 }],
		"keyword-spacing": ["error", { "before": true, "after": true }],
		"space-before-blocks": ["error"],
		"space-before-function-paren": ["error", {"anonymous": "always", "named": "never", "asyncArrow": "always"}],
		"camelcase": ["error"],
		"no-tabs": [0],
		"global-require": [0],
		"no-underscore-dangle": [0],
		"no-plusplus": [0],
		"no-shadow": [0],
		"node/no-unpublished-require": [0],
		"no-process-exit": [0],
		"linebreak-style": [0],
		"node/no-missing-require": [0],
		"no-console": [0],
		"node/no-unsupported-features/es-builtins": [
			"error",
			{ "version": ">=18.12.1" }
		],
		"node/no-unsupported-features/node-builtins": [
			"error",
			{ "version": ">=18.12.1" }
		],
		"func-names": [
			"error",
			"never",
			{
				"generators": "never"
			}
		]
	}
}
