4.0 KiB
Зависимости Level 3
Уточнение графа зависимостей Level 2 внутри домена.
Связанные правила
Направление внутри домена
| Исходный модуль | Допустимые зависимости |
|---|---|
business |
Собственные сегменты, нейтральные ресурсы shared, в ограниченных случаях — публичные типы другого модуля business |
| Адаптер | Контракты business, модули infra, конкретная техническая реализация и нейтральные ресурсы shared |
Модуль группы presets |
Фабрика и контракты business, закрытые или самостоятельные адаптеры |
react |
Контракты business, готовый API и React |
| Модуль-владелец графа | Публичные API модулей business, типовых сборок и модулей фреймворков, входящих в граф |
Модуль business не импортирует адаптеры, сборки, модули фреймворков, infra, продуктовые SDK, хранилища, API браузера или Node.js и конфигурацию среды. Адаптер не импортирует сборку или модуль фреймворка. Модуль сборки не импортирует модуль фреймворка.
Междоменные зависимости
Модуль business одного домена не создаёт фабрику другого домена и не вызывает его исполняемый API напрямую. Если домену orders нужны сведения об авторизации, orders/business описывает собственный минимальный порт, а владелец графа передаёт его реализацию поверх уже созданного AuthApi.
сборка auth
→ AuthApi
→ сборка orders
→ OrdersApi
Импорт публичного типа из модуля business другого домена допустим только при реальной ацикличной зависимости. Такой импорт не разрешает вызывать API другого домена.
Прямой импорт даже чистой функции не служит обходом порта. Независимое общее правило принадлежит shared, а предметная возможность другого домена передаётся через порт.
Границы сред выполнения
Серверная сборка или адаптер получает отдельную публичную точку входа и предусмотренную фреймворком либо сборщиком метку:
business # подходит клиенту и серверу
presets/application # подходит клиенту, если совместимы адаптеры
presets/request # только сервер
react # клиентский модуль React
Серверная точка входа не реэкспортируется через business, react, клиентскую сборку или корень домена. Путь server/ или client/ сам по себе ничего не доказывает: проверяется весь граф импортов, достижимый из точки входа.