{
	"root": true,

	"plugins": ["prettier", "simple-import-sort"],

	"extends": ["airbnb-base", "eslint:recommended", "prettier"],

	"env": {
		"commonjs": true,
		"es6": true,
		"node": true,
		"jest": true
	},

	"globals": {
		"Atomics": "readonly",
		"SharedArrayBuffer": "readonly"
	},

	"parserOptions": {
		"ecmaVersion": 2021
	},

	"rules": {
		"prettier/prettier": "error",
		"max-len": [
			"error",
			{
				"code": 256,
				"ignoreComments": true
			}
		],
		"linebreak-style": [0, "error", "windows"],
		"no-tabs": [
			"error",
			{
				"allowIndentationTabs": true
			}
		],
		"no-bitwise": [
			"error",
			{
				"allow": ["|", "&"]
			}
		],
		"max-classes-per-file": [
			"error",
			{
				"ignoreExpressions": true,
				"max": 3
			}
		],
		"class-methods-use-this": "off",
		"no-underscore-dangle": "off",

		"import/prefer-default-export": "off",
		"import/no-relative-packages": "off",
		"import/extensions": ["error", "always", { "ignorePackages": true }],

		"simple-import-sort/imports": "error",
		"simple-import-sort/exports": "error",
		"import/first": "error",
		"import/newline-after-import": "error",
		"import/no-duplicates": "error"
	},

	"settings": {
		"import/extensions": [".mjs", ".js"],

		"import/resolver": {
			"node": {
				"extensions": [".mjs", ".js"]
			},
			"alias": {
				"map": [["##", "./src"]],
				"extensions": [".js", ".jsx", ".json", ".mjs"]
			}
		}
	}
}
