ADAMANT API JS Client v3.0.0
Это крупное обновление SDK, синхронизированное с ADAMANT Node v0.10.0. Обновлены HTTP и WebSocket-клиенты для текущего API узла, введены стабильные модульные границы пакетов, улучшены поведение повторных попыток и отказоустойчивость, добавлена детерминированная генерация метаданных, а устаревшая документация на основе Wiki заменена на контролируемый исходный код сайта на VitePress и TypeDoc.
Поддержка ADAMANT Node v0.10.0
Выпуск включает повторную генерацию DTO API из зафиксированной ревизии adamant-schema, включая метки времени в миллисекундах, данные загрузчика и состояния, числовые счётчики и опциональные поля для неподтверждённых транзакций. Добавлены текущие параметры запросов транзакций и чатов, такие как returnUnconfirmed, includeDirectTransfers, поиск делегатов по адресу и запросы транзакций нескольких типов. Фильтры запросов транзакций теперь по умолчанию объединяются логическим оператором and, а фильтры суммы применяются только к транзакциям передачи. SDK добавляет опциональную конструкцию транзакций с timestampMs и функцию getEpochTimeMs; поскольку timestampMs не входит в подписываемые байты, хэши, ID и подписи сохраняются. Проверки работоспособности обновлены для объединённого ответа о состоянии узла и поддерживают фильтрацию по минимальной версии узла.
Надёжность и поведение WebSocket
Клиент больше не повторяет явно отклонённые POST-ответы, вместо этого возвращая структурированные, неповторяемые HTTP-ошибки, предотвращая бесконечные циклы. Повторные попытки и переход на резервный активный узел сохраняются для безопасных запросов и сетевых сбоев, при которых HTTP-ответ отсутствует. Подписки WebSocket теперь поддерживают несколько адресов, типов транзакций и типов активов чата, с удобными обработчиками транзакций и сообщений, обратными вызовами подключения и переподключения, явными командами connect и disconnect, типизированными ошибками подключения, очисткой слушателей и ограниченной обработкой повторного подключения.
Модульный SDK и пакет npm
Корень пакета остаётся ориентированным на ADM и предотвращает загрузку реализаций, специфичных для конкретных монет. Добавлены экспортные подпути для ADM, DTO API, транзакций, метаданных и вспомогательных модулей BTC, ETH, DASH и DOGE, при этом поддерживается как CommonJS, так и ESM. Детерминированная метаданных кошелька синхронизируется из зафиксированной ревизии adamant-wallets. Код и зависимости Lisk и Klayr удалены, поддерживаемые методы получения внешних монет и проверки адресов стандартизированы. Для работы требуется Node.js 22 или новее, используется метаданные рабочей области pnpm, обновлены TypeScript и зависимости, добавлены тесты tarball на уровне потребителя.
Исправления API, сохранённые с версии v2.4.0
Данный выпуск исправляет поведение голосования делегатов и проверки работоспособности. Разрешены строковые полезные нагрузки для сигнальных сообщений, а суммы проверяются только для типов сообщений, которые их содержат. Идентификаторы транзакций представлены как строки, а вспомогательные функции валидации экспортируются.
Документация, автоматизация и сопровождение
Документация предоставляется через сайт VitePress с API-справочником, сгенерированным с помощью TypeDoc, и руководствами. В выпуск включён workflow GitHub Pages для документации с CNAME, обновлённые файлы README и CONTRIBUTING, проверки детерминированной синхронизации схемы и метаданных, пользовательский запускатель Jest, тесты для потребителей пакета, расширенное покрытие и тесты границ модулей. Линтинг и конфигурация TypeScript перенесены на текущий инструментарий, устаревшие файлы удалены.
Критические изменения
Подписки WebSocket теперь по умолчанию используют allDirections. Ранее клиент передавал только входящие транзакции с жёстко заданным фильтром recipientId === admAddress; теперь по умолчанию передаются как входящие, так и исходящие транзакции. Чтобы восстановить старое поведение, передайте direction: 'incoming' в параметрах клиента WebSocket. Требуется Node.js 22 или новее. Вспомогательные модули монет должны импортироваться из явных путей, например adamant-api/coins/btc, и больше не экспортируются из корня пакета. Поддержка Lisk и Klayr удалена. Фильтры запросов транзакций теперь по умолчанию используют логическое and, а фильтры сумм применяются только к транзакциям передачи. Потребителям следует проверить использование устаревшего параметра withoutDirectTransfers и перейти на includeDirectTransfers.
Разметка байтов транзакций, подпись, идентификаторы и семантика подписей остались без изменений. Потребители как CommonJS, так и ESM охвачены тестом упакованного tarball.