108 lines
3.2 KiB
JSON
108 lines
3.2 KiB
JSON
{
|
|
"forbidden": [
|
|
{
|
|
"name": "domain-is-framework-neutral",
|
|
"severity": "error",
|
|
"from": { "path": "^src/domain" },
|
|
"to": {
|
|
"path": "^(src/(application|presentation|adapters|bootstrap)|react|react-dom|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "application-does-not-know-concrete-runtime",
|
|
"severity": "error",
|
|
"from": { "path": "^src/application" },
|
|
"to": {
|
|
"path": "^(src/(presentation|adapters|bootstrap)|react|react-dom|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "presentation-does-not-know-adapters",
|
|
"severity": "error",
|
|
"from": { "path": "^src/presentation/(?!adapters/query)" },
|
|
"to": { "path": "^(src/(adapters|bootstrap)|@tanstack)" }
|
|
},
|
|
{
|
|
"name": "page-templates-own-layout-only",
|
|
"severity": "error",
|
|
"from": { "path": "^src/presentation/templates" },
|
|
"to": {
|
|
"path": "^(src/(application|adapters|bootstrap)|src/presentation/adapters|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "icon-vendor-is-facade-only",
|
|
"severity": "error",
|
|
"from": {
|
|
"path": "^src",
|
|
"pathNot":
|
|
"^src/presentation/design-system/icons/vendors/lucide\\.tsx$"
|
|
},
|
|
"to": { "path": "^lucide-react$" }
|
|
},
|
|
{
|
|
"name": "adapters-do-not-know-presentation",
|
|
"severity": "error",
|
|
"from": { "path": "^src/adapters" },
|
|
"to": { "path": "^src/(presentation|bootstrap)" }
|
|
},
|
|
{
|
|
"name": "feature-domain-is-framework-neutral",
|
|
"severity": "error",
|
|
"from": { "path": "^src/features/[^/]+/domain" },
|
|
"to": {
|
|
"path": "^(src/(application|presentation|adapters|bootstrap)|src/features/[^/]+/(application|adapters|presentation)|react|react-dom|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "feature-application-does-not-know-runtime",
|
|
"severity": "error",
|
|
"from": { "path": "^src/features/[^/]+/application" },
|
|
"to": {
|
|
"path": "^(src/(presentation|adapters|bootstrap)|src/features/[^/]+/(adapters|presentation)|react|react-dom|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "feature-presentation-does-not-know-outbound-adapters",
|
|
"severity": "error",
|
|
"from": { "path": "^src/features/[^/]+/presentation" },
|
|
"to": {
|
|
"path": "^(src/(adapters|bootstrap)|src/features/[^/]+/adapters|@tanstack)"
|
|
}
|
|
},
|
|
{
|
|
"name": "feature-adapters-do-not-know-presentation",
|
|
"severity": "error",
|
|
"from": { "path": "^src/features/[^/]+/adapters" },
|
|
"to": {
|
|
"path": "^(src/(presentation|bootstrap)|src/features/[^/]+/presentation)"
|
|
}
|
|
},
|
|
{
|
|
"name": "concrete-adapters-compose-only-in-bootstrap",
|
|
"severity": "error",
|
|
"from": { "path": "^src/(domain|application|presentation|contracts)" },
|
|
"to": { "path": "^src/adapters" }
|
|
},
|
|
{
|
|
"name": "no-circular-dependencies",
|
|
"severity": "error",
|
|
"from": {},
|
|
"to": { "circular": true }
|
|
}
|
|
],
|
|
"options": {
|
|
"doNotFollow": { "path": "node_modules" },
|
|
"exclude": {
|
|
"path": "^(dist|artifacts|tests/fixtures)"
|
|
},
|
|
"enhancedResolveOptions": {
|
|
"exportsFields": ["exports"],
|
|
"conditionNames": ["import", "require", "node", "default"]
|
|
},
|
|
"tsConfig": {
|
|
"fileName": "tsconfig.app.json"
|
|
}
|
|
}
|
|
}
|