{ "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" } } }