-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy path.dependency-cruiser.cjs
More file actions
53 lines (53 loc) · 2.15 KB
/
Copy path.dependency-cruiser.cjs
File metadata and controls
53 lines (53 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
* Lint de boundaries de la arquitectura multi-theme.
*
* Regla de oro (ver CLAUDE.md / ARQUITECTURA §2):
* `core/` es la capa neutral y NUNCA debe importar nada de `themes/`.
* La dependencia va en un solo sentido: themes -> core, jamás al revés.
*
* Correr con: `npm run lint:boundaries`
*/
module.exports = {
forbidden: [
{
name: 'core-no-themes',
severity: 'error',
comment:
'core/ es la capa neutral y no conoce los themes. Si necesitás importar ' +
'algo de themes/ desde core/, está mal ubicado: probablemente pertenece a ' +
'core/ o a un primitivo compartido por tokens (ver ARQUITECTURA §2).',
from: { path: '^src/app/core/' },
to: { path: '^src/app/themes/' }
},
{
name: 'core-no-ui-primitives',
severity: 'error',
comment:
'core/ es la capa neutral y no debe importar de ui-primitives/ (capa de ' +
'presentación). La dependencia va themes/ui-primitives -> core, nunca al ' +
'revés. Si core/ necesita un tipo o helper que hoy vive en un componente, ' +
'movelo a core/domain/ (ej. core/domain/clone-cost.ts) y que el componente ' +
'lo re-exporte. Enforza la regla de oro también para el eje ui-primitives.',
from: { path: '^src/app/core/' },
to: { path: '^src/app/ui-primitives/' }
},
{
name: 'contracts-no-themes-ni-primitives',
severity: 'error',
comment:
'ui-contracts/ es la capa neutral de contratos (la API que los themes ' +
'implementan). Sólo puede mirar hacia core/. Si importa de themes/ o de ' +
'ui-primitives/, la dependencia quedó al revés: el contrato no debe conocer ' +
'a sus implementaciones (estilo Taiga: kit -> core -> cdk, nunca al revés).',
from: { path: '^src/app/ui-contracts/' },
to: { path: '^src/app/(themes|ui-primitives)/' }
}
],
options: {
doNotFollow: { path: 'node_modules' },
tsConfig: { fileName: 'tsconfig.json' },
// Seguir también imports type-only para que el límite no se evada con `import type`.
tsPreCompilationDeps: true,
exclude: { path: '(\\.spec\\.ts$|node_modules)' }
}
};