Files
slm-design/DRAFT/level-2/dependencies.md

51 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Зависимости Level 2
> Расширение графа зависимостей Level 1 слоем `domains`.
Level 2 не вводит отдельный вид зависимости. Доменные модули являются обычными узлами графа модулей, а Groups не участвуют в графе.
## Направление
Модуль слоя `domains` может импортировать:
- публичные API других доменных модулей;
- публичные API модулей `infra`, `ui` и `shared`;
- нормативные ресурсы `shared`.
`infra`, `ui` и `shared` не импортируют `domains`. `compositions` и `app` могут использовать публичные API доменных модулей как код нижнего слоя.
## Междоменные зависимости
Импорт между доменными модулями разрешён независимо от их Group:
```ts
// domains/orders
import type { Product } from '@/domains/catalog'
```
Он создаёт обычное ребро графа модулей:
```text
orders → catalog
```
Обратная runtime- или type-only зависимость, создающая цикл, запрещена общим правилом Level 1.
## Groups и зависимости
Путь опциональной Group участвует в адресе модуля, но сама Group не является импортируемой сущностью. Размещение в разных Groups не запрещает импорт и не задаёт его направление.
Если двум бизнес-приложениям нужна гарантированная архитектурная изоляция, одной Group недостаточно: такая граница требует отдельных SLM roots или правил более высокого проектного уровня.
## Вложенные модули
Вложенный модуль домена остаётся внутренним для родительской границы. Другой домен не импортирует его напрямую и получает необходимые экспорты через API корневого доменного модуля.
## Связанные правила
- [`SLM-L1-LAYER-A002`](../rules/level-1.md#slm-l1-layer-a002)
- [`SLM-L1-MODULE-A004`](../rules/level-1.md#slm-l1-module-a004)
- [`SLM-L1-DEPENDENCY-A005`](../rules/level-1.md#slm-l1-dependency-a005)
- [`SLM-L1-GROUP-R007`](../rules/level-1.md#slm-l1-group-r007)
- [`SLM-L1-NESTED_MODULE-A010`](../rules/level-1.md#slm-l1-nested_module-a010)