@ts-core/common
v3.0.69
Published
Common classes and utils
Readme
ts-core-common — это библиотека общего назначения, написанная на TypeScript, предназначенная для построения сложных приложений с поддержкой:
- реактивных паттернов (RxJS),
- расширенной работы с коллекциями,
- DTO и фильтрации данных,
- асинхронных операций,
- криптографии,
- транспорта (в т.ч. HTTP),
- логирования,
- валидации,
- и других утилитарных задач.
Она может использоваться как фундамент для серверных и клиентских приложений, где важны строгая типизация, масштабируемость и расширяемость.
Основные модули и их назначение
1. crypto/
- Реализация криптографических алгоритмов (Ed25519, TweetNaCl, Sha512).
- Интерфейсы для асимметричных ключей и подписей.
- Утилиты для генерации ключей, подписей, шифрования/дешифрования.
2. dto/
- Универсальные интерфейсы и классы для фильтрации, пагинации, сериализации/десериализации данных.
- Классы для работы с фильтрами, условиями, сортировками, страницами и закладками (bookmark).
- Позволяет строить сложные запросы к данным с поддержкой фильтрации и сортировки на уровне API.
3. error/
- Расширенные классы ошибок (например, ExtendedError), обработка ошибок HTTP и транспорта.
- Утилиты для парсинга ошибок сторонних библиотек (например, Axios).
4. executor/
- Абстракции для последовательного выполнения задач (SequenceExecutor).
- Управление асинхронными операциями с поддержкой событий и статусов.
5. logger/
- Интерфейсы и абстракции для логирования с поддержкой уровней (error, warn, log, debug, verbose).
- Обертки для логгеров, позволяющие гибко настраивать поведение.
6. map/
- Расширенные коллекции на основе Map с поддержкой фильтрации, уничтожения (destroy), пагинации.
- DataSourceMapCollection — коллекции, которые могут асинхронно подгружать данные (например, с сервера), с поддержкой событий и реактивности.
7. observer/
- Реализация паттерна Observer для реактивных событий.
- ObservableData — универсальный контейнер для передачи событий и данных.
8. promise/
- Утилиты для работы с промисами и их отражением (PromiseHandler, PromiseReflector).
- Управление состояниями промисов (pending, resolved, rejected).
9. settings/
- Абстракция для хранения и валидации настроек приложения.
10. trace/
- Поддержка трассировки объектов (traceId), генерация уникальных идентификаторов для отслеживания операций.
11. transport/
- Абстракции для транспорта команд и событий (Command, Event, Handler).
- Реализации для HTTP и локального транспорта.
- Поддержка асинхронных команд, событий, таймаутов, логирования транспортных операций.
- Криптографические менеджеры для подписания и проверки команд.
12. util/
- Большой набор утилитарных функций: работа с массивами, объектами, датами, числами, строками, валидацией, клонированием, преобразованием данных и др.
13. validate/
- Декораторы и утилиты для валидации данных с помощью class-validator.
Ключевые особенности
- Реактивность: Использование RxJS для событий, статусов загрузки, ошибок и т.д.
- Гибкая фильтрация и пагинация: Позволяет строить сложные запросы к данным, удобно для API и UI-таблиц.
- Расширяемость: Большинство классов и интерфейсов спроектированы для наследования и расширения.
- Безопасность: Встроенная поддержка современных криптографических алгоритмов.
- Транспортная независимость: Можно реализовать разные способы передачи команд/событий (HTTP, WebSocket, локально и т.д.).
- Валидация: Глубокая интеграция с class-validator для проверки DTO и команд.
- Логирование: Гибкая система логирования с уровнями и возможностью подмены логгеров.
Примеры сценариев использования
- Бэкенд-сервисы: Реализация API с поддержкой фильтрации, пагинации, валидации входящих данных, логирования и обработки ошибок.
- Клиентские приложения: Управление состоянием коллекций, фильтрация и сортировка данных, реактивные обновления UI.
- Микросервисы: Передача команд и событий между сервисами с поддержкой подписей и проверки целостности.
- Интеграция с внешними API: Универсальный транспорт для отправки и получения данных, обработка ошибок и валидация.
Для кого этот проект
- Для опытных разработчиков, которым нужна мощная, расширяемая и типобезопасная основа для построения сложных приложений.
- Для команд, которые ценят чистую архитектуру, модульность и повторное использование кода.
