121 lines
3.2 KiB
JSON
121 lines
3.2 KiB
JSON
{
|
|
"root": true,
|
|
"env": {
|
|
"es2022": true,
|
|
"node": true
|
|
},
|
|
"parserOptions": {
|
|
"sourceType": "module",
|
|
"ecmaVersion": 2022
|
|
},
|
|
"settings": {
|
|
"import/resolver": {
|
|
"typescript": {}
|
|
},
|
|
"boundaries/elements": [
|
|
{
|
|
"type": "website",
|
|
"pattern": "apps/website/**/*"
|
|
},
|
|
{
|
|
"type": "api",
|
|
"pattern": "apps/api/**/*"
|
|
},
|
|
{
|
|
"type": "adapters",
|
|
"pattern": ["adapters/**/*", "@adapters/**/*"]
|
|
},
|
|
{
|
|
"type": "core",
|
|
"pattern": ["core/**/*", "@core/**/*"]
|
|
}
|
|
]
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["**/index.ts", "**/index.tsx"],
|
|
"rules": {
|
|
"no-restricted-syntax": [
|
|
"error",
|
|
{
|
|
"selector": "Program",
|
|
"message": "index.ts files are forbidden. Use explicit file names instead (e.g., UserService.ts, not index.ts)."
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"files": ["**/*.ts", "**/*.tsx"],
|
|
"parser": "@typescript-eslint/parser",
|
|
"plugins": ["@typescript-eslint", "boundaries", "import"],
|
|
"extends": [],
|
|
"rules": {
|
|
"@typescript-eslint/no-explicit-any": "error",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{
|
|
"args": "all",
|
|
"argsIgnorePattern": "^$",
|
|
"vars": "all",
|
|
"varsIgnorePattern": "^$",
|
|
"caughtErrors": "all"
|
|
}
|
|
],
|
|
"boundaries/element-types": [
|
|
2,
|
|
{
|
|
"default": "disallow",
|
|
"rules": [
|
|
{
|
|
"from": ["website"],
|
|
"allow": ["website"]
|
|
},
|
|
{
|
|
"from": ["api"],
|
|
"allow": ["api", "adapters", "core"]
|
|
},
|
|
{
|
|
"from": ["adapters"],
|
|
"allow": ["adapters", "core"]
|
|
},
|
|
{
|
|
"from": ["core"],
|
|
"allow": ["core"]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"import/no-restricted-imports": [
|
|
2,
|
|
{
|
|
"paths": [
|
|
{
|
|
"name": "apps/website/lib/apiClient",
|
|
"message": "Direct imports from apiClient are forbidden. Use services instead."
|
|
},
|
|
{
|
|
"name": "apps/website/lib/dtos",
|
|
"message": "Direct imports from dtos in UI components are forbidden. Use ViewModels instead.",
|
|
"from": ["apps/website/app/**/*", "apps/website/components/**/*"]
|
|
},
|
|
{
|
|
"name": "apps/website/lib/api",
|
|
"message": "Direct imports from api/* in UI components are forbidden. Use services instead.",
|
|
"from": ["apps/website/app/**/*", "apps/website/components/**/*"]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"import/no-default-export": "error",
|
|
"import/no-useless-path-segments": "error",
|
|
"no-restricted-syntax": [
|
|
"error",
|
|
{
|
|
"selector": "ExportDefaultDeclaration",
|
|
"message": "Default exports are forbidden. Use named exports instead."
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
} |