@lithium-platform/commons
v1.2.1
Published
Shared infrastructure utilities for Lithium platform services
Readme
@lithium-platform/commons
Общая инфраструктурная библиотека для сервисов Lithium (Node 18+, TypeScript). Содержит переиспользуемые утилиты без привязки к домену конкретного продукта (имена кэшей, бизнес-сущности и т.п. остаются в сервисах-потребителях).
Публикуется в npm как @lithium-platform/commons (текущая версия см. в package.json).
Установка
npm install @lithium-platform/commonsДля доступа только к Redis-клиенту (без подтягивания остального barrel при необходимости):
# импорт подпути (см. package.json "exports")
import { initRedis, getRedisClient, closeRedis } from '@lithium-platform/commons/redis';Модули
Корневого barrel больше нет — пакет не резолвится как @lithium-platform/commons без подпути. Импортируйте явно:
| Импорт | Содержимое |
|--------|------------|
| @lithium-platform/commons/config | Env, длительности, типы SASL / Kafka consumer mode |
| @lithium-platform/commons/logger | Логирование |
| @lithium-platform/commons/redis | Redis-клиент |
| @lithium-platform/commons/db | Sequelize / pg |
| @lithium-platform/commons/cache | BentoCache (peer bentocache) |
| @lithium-platform/commons/kafka | Kafka-хелперы (peer @platformatic/kafka) |
| Путь в src/ | Назначение |
|---------------|------------|
| cache/ | BentoCache: createTwoLevelCache (L1 memory + L2 Redis + bus), nodeRedisDriver, nodeRedisBus; createLocalMemoryBento — один BentoCache с набором L1-only store, имена и префиксы задаёт вызывающий код (stores: [{ name, prefix? }]). |
| redis/ | Синглтон Redis (redis v5): initRedis, getRedisClient, closeRedis, createRedisClient, RedisClientOptions. |
| logger/ | getLogger, getRootLogger, уровни из env, scope-ы. |
| config/ | Парсинг env: parseDurationMs, parseBoolEnv, envString, envInt, envBool, envDuration; типы/парсинг для Kafka consumer mode / SASL. |
| kafka/ | Общие вспомогательные части для Kafka (при наличии peer @platformatic/kafka). |
| db/ | Общие вспомогательные части для Sequelize/pg (при наличии peer). |
Публикация и потребители
После выхода версии на npm замените в сервисах зависимость file:../lithium-commons на semver (например ^1.2.0) и выполните npm install.
Корневой entrypoint отсутствует; используйте подпути @lithium-platform/commons/kafka, @lithium-platform/commons/cache, @lithium-platform/commons/config, и т.д.
Peer-зависимости
Часть функциональности требует peer (опционально, см. peerDependenciesMeta в package.json):
bentocache— дляcache/;sequelize,pg— дляdb/;@platformatic/kafka— для Kafka-хелперов.
Сервис, использующий только Redis и логгер, может не подключать bentocache и @platformatic/kafka, если не импортирует @lithium-platform/commons/cache и @lithium-platform/commons/kafka.
Сборка и тесты
npm run build # tsc → dist/
npm test # vitestПотребители в монорепо Lithium
Типичные зависимости: lithium-back, lithium-flow, lithium-chatbots, lithium-parsers, lithium-tg (версия в их package.json, с 1.2.0 — например ^1.2.0 или file:../lithium-commons в монорепо). Документация по платформе: корневой репозиторий docs/services-catalog.md, docs/architecture.md.
