{
	"plugins": ["typescript"],
	"env": {
		"browser": true,
		"esnext": true,
		"node": true
	},
	"globals": {
		"describe": "readonly",
		"it": "readonly",
		"test": "readonly",
		"expect": "readonly",
		"beforeEach": "readonly",
		"afterEach": "readonly",
		"beforeAll": "readonly",
		"afterAll": "readonly",
		"vi": "readonly"
	},
	"categories": {
		"correctness": "error",
		"suspicious": "error",
		"perf": "warn"
	},
	"ignorePatterns": [
		"**/_generated/**",
		"**/dist/**",
		"**/coverage/**",
		"**/node_modules/**",
		"**/pkg/**",
		"**/.next/**",
		"**/*.min.js",
		"docs/snippets/**/*.ts"
	],
	"rules": {
		"no-console": "off",
		"no-debugger": "error",
		"prefer-const": "error",
		"eqeqeq": ["error", "always", { "null": "ignore" }],
		"no-unused-vars": "off",
		"no-underscore-dangle": "off",
		"@typescript-eslint/no-unused-vars": "warn",
		"@typescript-eslint/no-explicit-any": "error",
		"@typescript-eslint/no-non-null-assertion": "error",
		"@typescript-eslint/consistent-type-imports": "error"
	},
	"overrides": [
		{
			"files": ["**/*.spec.ts", "**/*.spec.tsx", "**/*.test.ts", "**/*.test.tsx", "**/tests/**"],
			"rules": {
				"@typescript-eslint/no-explicit-any": "off",
				"@typescript-eslint/no-non-null-assertion": "off",
				"no-unused-vars": "off"
			}
		}
	]
}
