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

51 lines
4.0 KiB
Markdown
Raw Normal View History

2026-07-30 13:22:45 +03:00
# Зависимости Level 3
> Уточнение графа зависимостей Level 2 внутри домена.
2026-07-30 13:22:45 +03:00
## Связанные правила
- [`SLM-L3-BUSINESS-A004`](../rules/level-3.md#slm-l3-business-a004)
- [`SLM-L3-DEPENDENCY-R011`](../rules/level-3.md#slm-l3-dependency-r011)
- [`SLM-L3-ENVIRONMENT-A012`](../rules/level-3.md#slm-l3-environment-a012)
- [`SLM-L1-DEPENDENCY-A005`](../rules/level-1.md#slm-l1-dependency-a005)
## Направление внутри домена
2026-07-30 13:22:45 +03:00
| Исходный модуль | Допустимые зависимости |
2026-07-30 13:22:45 +03:00
|---|---|
| `business` | Собственные сегменты, нейтральные ресурсы `shared`, в ограниченных случаях — публичные типы другого модуля `business` |
| Адаптер | Контракты `business`, модули `infra`, конкретная техническая реализация и нейтральные ресурсы `shared` |
| Модуль группы `presets` | Фабрика и контракты `business`, закрытые или самостоятельные адаптеры |
| `react` | Контракты `business`, готовый API и React |
| Модуль-владелец графа | Публичные API модулей `business`, типовых сборок и модулей фреймворков, входящих в граф |
2026-07-30 13:22:45 +03:00
Модуль `business` не импортирует адаптеры, сборки, модули фреймворков, `infra`, продуктовые SDK, хранилища, API браузера или Node.js и конфигурацию среды. Адаптер не импортирует сборку или модуль фреймворка. Модуль сборки не импортирует модуль фреймворка.
2026-07-30 13:22:45 +03:00
## Междоменные зависимости
Модуль `business` одного домена не создаёт фабрику другого домена и не вызывает его исполняемый API напрямую. Если домену `orders` нужны сведения об авторизации, `orders/business` описывает собственный минимальный порт, а владелец графа передаёт его реализацию поверх уже созданного `AuthApi`.
2026-07-30 13:22:45 +03:00
```text
сборка auth
2026-07-30 13:22:45 +03:00
→ AuthApi
→ сборка orders
2026-07-30 13:22:45 +03:00
→ OrdersApi
```
Импорт публичного типа из модуля `business` другого домена допустим только при реальной ацикличной зависимости. Такой импорт не разрешает вызывать API другого домена.
2026-07-30 13:22:45 +03:00
Прямой импорт даже чистой функции не служит обходом порта. Независимое общее правило принадлежит `shared`, а предметная возможность другого домена передаётся через порт.
2026-07-30 13:22:45 +03:00
## Границы сред выполнения
Серверная сборка или адаптер получает отдельную публичную точку входа и предусмотренную фреймворком либо сборщиком метку:
2026-07-30 13:22:45 +03:00
```text
business # подходит клиенту и серверу
presets/application # подходит клиенту, если совместимы адаптеры
presets/request # только сервер
react # клиентский модуль React
2026-07-30 13:22:45 +03:00
```
Серверная точка входа не реэкспортируется через `business`, `react`, клиентскую сборку или корень домена. Путь `server/` или `client/` сам по себе ничего не доказывает: проверяется весь граф импортов, достижимый из точки входа.