Files
f1r3wave-website/.eslintrc.js
2025-10-06 19:22:47 +02:00

71 lines
1.7 KiB
JavaScript

module.exports = {
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: 2020,
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
},
plugins: ["@typescript-eslint", "simple-import-sort", "import"],
extends: ["eslint:recommended", "@typescript-eslint/recommended", "prettier"],
rules: {
// Prettier rules (these will be formatted by Prettier, but ESLint can warn)
"prettier/prettier": "error",
// Import sorting and organization
"simple-import-sort/imports": [
"error",
{
groups: [
// Node.js builtins
["^node:"],
// External packages (react, lodash, etc.)
["^@?\\w"],
// Internal aliases (if you use path aliases)
["^@/"],
// Parent imports
["^\\.\\.(?!/?$)", "^\\.\\./?$"],
// Other relative imports
["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"],
// Style imports
["^.+\\.s?css$"],
],
},
],
"simple-import-sort/exports": "error",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
// Disallow relative imports starting with dot
"no-restricted-imports": [
"error",
{
patterns: [
{
group: ["./*"],
message: "Relative imports starting with dot are not allowed.",
},
],
},
],
// TypeScript specific rules
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
},
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
typescript: {
alwaysTryTypes: true,
},
},
},
};