mirror of
https://github.com/gethomepage/homepage.git
synced 2026-08-30 17:05:52 -07:00
6a96289717
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> Signed-off-by: dependabot[bot] <support@github.com>
99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
import { fixupConfigRules } from "@eslint/compat";
|
|
import { FlatCompat } from "@eslint/eslintrc";
|
|
import js from "@eslint/js";
|
|
import prettier from "eslint-plugin-prettier";
|
|
import { defineConfig, globalIgnores } from "eslint/config";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const compat = new FlatCompat({
|
|
baseDirectory: __dirname,
|
|
recommendedConfig: js.configs.recommended,
|
|
allConfig: js.configs.all,
|
|
});
|
|
|
|
export default defineConfig([
|
|
{
|
|
files: ["**/*.{js,mjs,cjs,jsx}"],
|
|
|
|
extends: fixupConfigRules(compat.extends("next/core-web-vitals", "prettier", "plugin:react-hooks/recommended")),
|
|
|
|
plugins: {
|
|
prettier,
|
|
},
|
|
|
|
languageOptions: {
|
|
ecmaVersion: 6,
|
|
sourceType: "module",
|
|
|
|
parserOptions: {
|
|
ecmaFeatures: {
|
|
modules: true,
|
|
},
|
|
},
|
|
},
|
|
|
|
settings: {
|
|
"import/resolver": {
|
|
node: {
|
|
paths: ["src"],
|
|
},
|
|
},
|
|
},
|
|
|
|
rules: {
|
|
"import/no-cycle": [
|
|
"error",
|
|
{
|
|
maxDepth: 1,
|
|
},
|
|
],
|
|
|
|
"import/order": [
|
|
"error",
|
|
{
|
|
"newlines-between": "always",
|
|
},
|
|
],
|
|
|
|
"no-else-return": [
|
|
"error",
|
|
{
|
|
allowElseIf: true,
|
|
},
|
|
],
|
|
|
|
// Keep the pre-eslint-plugin-react-hooks v6 lint policy until rules are adopted incrementally
|
|
"react-hooks/config": "off",
|
|
"react-hooks/error-boundaries": "off",
|
|
"react-hooks/exhaustive-deps": "warn",
|
|
"react-hooks/gating": "off",
|
|
"react-hooks/globals": "off",
|
|
"react-hooks/immutability": "off",
|
|
"react-hooks/incompatible-library": "off",
|
|
"react-hooks/preserve-manual-memoization": "off",
|
|
"react-hooks/purity": "off",
|
|
"react-hooks/refs": "off",
|
|
"react-hooks/rules-of-hooks": "error",
|
|
"react-hooks/set-state-in-effect": "off",
|
|
"react-hooks/set-state-in-render": "off",
|
|
"react-hooks/static-components": "off",
|
|
"react-hooks/unsupported-syntax": "off",
|
|
"react-hooks/use-memo": "off",
|
|
},
|
|
},
|
|
// Vitest tests often intentionally place imports after `vi.mock(...)` to ensure
|
|
// modules under test see the mocked dependencies. `import/order` can't safely
|
|
// auto-fix those cases, so disable it for test files.
|
|
{
|
|
files: ["src/**/*.test.{js,jsx}", "src/**/*.spec.{js,jsx}"],
|
|
rules: {
|
|
"import/order": "off",
|
|
},
|
|
},
|
|
globalIgnores(["./config/", "./coverage/", "./.venv/", "./.next/", "./site/"]),
|
|
]);
|