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

2.7 KiB
Raw Blame History

Зависимости Level 2

Расширение графа зависимостей Level 1 слоем domains.

Level 2 не вводит отдельный вид зависимости. Доменные модули являются обычными узлами графа модулей, а Groups не участвуют в графе.

Направление

Модуль слоя domains может импортировать:

  • публичные API других доменных модулей;
  • публичные API модулей infra, ui и shared;
  • нормативные ресурсы shared.

infra, ui и shared не импортируют domains. compositions и app могут использовать публичные API доменных модулей как код нижнего слоя.

Междоменные зависимости

Импорт между доменными модулями разрешён независимо от их Group:

// domains/orders
import type { Product } from '@/domains/catalog'

Он создаёт обычное ребро графа модулей:

orders → catalog

Обратная runtime- или type-only зависимость, создающая цикл, запрещена общим правилом Level 1.

Groups и зависимости

Путь опциональной Group участвует в адресе модуля, но сама Group не является импортируемой сущностью. Размещение в разных Groups не запрещает импорт и не задаёт его направление.

Если двум бизнес-приложениям нужна гарантированная архитектурная изоляция, одной Group недостаточно: такая граница требует отдельных SLM roots или правил более высокого проектного уровня.

Вложенные модули

Вложенный модуль домена остаётся внутренним для родительской границы. Другой домен не импортирует его напрямую и получает необходимые экспорты через API корневого доменного модуля.

Связанные правила