// Règles d'architecture de l'application (ADR 0007, point 2 ; ADR 0009), // vérifiées par dependency-cruiser dans make test (tests/test_web.sh). // Les chemins sont relatifs au dossier app/. /** @type {import('dependency-cruiser').IConfiguration} */ module.exports = { forbidden: [ { name: "domain-is-pure", comment: "Le domaine n'importe que le domaine : ni le moteur (src/engine), ni " + "l'interface (src/ui), ni Node, ni bibliothèque, ni code du navigateur. " + "Il décrit ce dont il a besoin (interface Engine) ; les adaptateurs " + "l'implémentent.", severity: "error", from: { path: "^src/domain/" }, to: { pathNot: "^src/domain/" }, }, { name: "ui-does-not-call-engine", comment: "Aucun écran n'appelle le moteur directement : l'interface passe par le domaine.", severity: "error", from: { path: "^src/ui/" }, to: { path: "^src/engine/" }, }, { name: "no-circular", comment: "Pas de dépendance circulaire.", severity: "error", from: {}, to: { circular: true }, }, ], options: { // Les imports de types comptent aussi : ils disparaissent à la // compilation, mais créent bien une dépendance dans le code source. tsPreCompilationDeps: true, // Résolution des imports comme TypeScript : « ./events.js » désigne // le fichier events.ts. Le tsconfig.json est celui du dossier courant. tsConfig: { fileName: "tsconfig.json" }, }, };