Skip to content

0001. TypeScript strict и модульные границы ​

Статус: accepted. Дата: 2026-09-22.

Контекст ​

Для автономного хранилища выбран TypeScript strict. Нужны независимые выпуски, совместимость с внешним протоколом и надёжная передача больших файлов.

Решение ​

Продуктовый код — TypeScript strict. Node.js 24 LTS, ESM, npm workspaces. Контрольные слои: domain, application, contracts, infrastructure, адаптер внешнего протокола (удалён ADR 0045), sdk; серверные apps собирают зависимости. Fastify — выбранное направление HTTP backend, добавляется с первым рабочим сценарием.

strict, noUncheckedIndexedAccess, exactOptionalPropertyTypes и дополнительные проверки задаются общей конфигурацией. Runtime-валидация внешних данных обязательна. Границы проверяет dependency-cruiser, качество исходников — type-aware ESLint.

Инструменты зафиксированы lock-файлом. TypeScript 5.9.3 — совместимая исходная линия для выбранного lint tooling; major обновляется отдельным изменением. Скрипты средств разработки могут быть ESM .mjs/.cjs, чтобы запускаться без предварительной сборки; код продукта остаётся .ts.

Альтернативы и последствия ​

Продолжение Python не соответствует выбранному направлению. Разделение на много микросервисов сейчас усложнило бы эксплуатацию без измеренной пользы. Общие wire-контракты не означают общую БД или обязательный синхронный выпуск внешнего приложения и ProAnima Arkvory.

Каркас не содержит runtime API. Сборка deployable JS, schemas и adapter contracts появляются в первой вертикальной реализации. CI проверяет границы уже сейчас.

Arkvory · ProAnimaStudio