Files
slm-design/docs/ru/specification/public-api-and-imports.md

3.2 KiB
Raw Blame History

title, status, normative
title status normative
Public API и импорты draft true

Public API и Импорты

Public API ограничивает знание consumers о внутренней структуре module. Точная форма entrypoint определяется владельцем и не требует обязательного index.ts.

Общие правила

SLM-BASE-API-001 - ОБЯЗАН. Межмодульный import должен использовать объявленный public entrypoint импортируемого module.

SLM-BASE-API-002 - ЗАПРЕЩЕНО. Deep imports во внутренние segments, files и иные private paths другого module запрещены.

SLM-BASE-API-003 - ОБЯЗАН. Каждый runtime export должен иметь реального consumer за пределами владеющего entrypoint и стабильную ответственность.

SLM-BASE-API-004 - ЗАПРЕЩЕНО. Public API не может случайно раскрывать implementation unit, который владелец считает private или lifecycle которого не является частью public contract.

SLM-BASE-API-005 - ОБЯЗАН. Alias или package subpath должен физически разрешаться TypeScript, tests и production build.

SLM-BASE-API-009 - МОЖЕТ. Public entrypoint может быть root index.ts, отдельным named entry, package export или другим явно объявленным path.

SLM-BASE-API-010 - ОБЯЗАН. Public и private paths module должны быть различимы consumers и repository tooling.

Layer matrix

Importer Runtime imports
app Public composition entries, shared static/global resources
compositions Compositions, infra, ui, shared
infra Infra, shared
ui UI, shared
shared External pure libraries only

Type-only imports

SLM-BASE-API-006 - МОЖЕТ. import type может использоваться для разрешённого contract dependency без создания runtime edge.

SLM-BASE-API-007 - ЗАПРЕЩЕНО. Type-only import не разрешает перенос ownership, импорт private concrete runtime type или обход layer boundary.

Groups

Отсутствие public entrypoint у group определяется base-правилом SLM-BASE-MOD-004.

SLM-BASE-API-015 - ОБЯЗАН. Composition public API экспортирует только entry components, access APIs, types и contracts, необходимые внешним composition consumers.

Cycles

SLM-BASE-API-016 - ЗАПРЕЩЕНО. Runtime import cycle между modules запрещён независимо от того, способен ли bundler его выполнить.

SLM-BASE-API-017 - ЗАПРЕЩЕНО. Barrel не должен создавать скрытый cycle между ready composition и access API её children.

Дополнительные entrypoints и import restrictions принадлежат overlay, который их вводит.