Node.js SDK: Руководство

Архитектура ликвидности
нового поколения

Полное руководство по интеграции J-SOnly в ваши проекты на JavaScript и TypeScript. От установки пакетов до обработки асинхронных событий в реальном времени.

1. Установка через npm

Библиотека `js-only-sdk` доступна в публичном реестре npm. Она оптимизирована для сред выполнения Node.js (v18+) и поддерживает ESM и CommonJS модули.

Terminal bash
$ npm install @js-only/sdk
added 14 packages in 420ms
js-only-sdk@2.4.0
📦

Минимальный размер бандла

Используем tree-shaking для импорта только необходимых модулей. Размер gzip архива всего 14кб.

🔗

Зависимости

SDK не тянет тяжелые зависимости. Требуется только Node.js v18 или выше для нативной поддержки Web Crypto API.

2. Типизация (TypeScript support)

Полная поддержка TypeScript «из коробки». Мы предоставляем строгие интерфейсы для всех моделей данных, что позволяет IDE подсказывать поля и предотвращать ошибки компиляции.

Включите strict: true в вашем tsconfig.json для максимальной безопасности типов.

import
{ Client, types }
from
'@js-only/sdk';

// Инициализация клиента
const
client =
new
Client({
  apiKey: process.env.JS_API_KEY,
  environment: 'sandbox' // 'production'
});

// Строгая типизация ответа
const
balance: types.LiquidityPool = await client.pools.get('main_usd');

console.log(balance.available); // number
Схематичное изображение архитектуры Node.js

3. Обработка событий

SDK использует паттерн Event Emitter для работы с вебхуками и изменениями состояния ликвидности в реальном времени. Это позволяет реагировать на входящие платежи мгновенно.

Поддерживаемые события:

  • 'transaction.completed'
  • 'liquidity.low'
  • 'settlement.failed'

Вся обработка происходит в неблокирующем режиме, сохраняя производительность вашего Event Loop.

4. Примеры кода

Типовые сценарии использования для быстрого старта разработки.

Создание транзакции
// Инициируем перевод ликвидности
const
tx = await client.transactions.create({
  amount: 50000,
  currency: 'USD',
  recipient: 'acc_99283',
  idempotencyKey: crypto.randomUUID()
});

console.log(`TX ID: ${tx.id}`);
Слушатель событий
const
unsubscribe = client.on('transaction.completed', (data) => {
  // Логика обработки успеха
  updateDatabase(data.id);
  notifyUser(data.recipient);
});

// Отписка при размонтировании
process.on('SIGTERM', () => {
  unsubscribe();
});
Обработка ошибок
try
{
  await client.validate();
}
catch
(error) {
  
if
(error
instanceof
InsufficientFundsError) {
    log.error('Баланс недостаточен');
  }
else
{
    alertOps(error);
  }
}

Начните кодировать сегодня

Получите API ключ в песочнице за 2 минуты. Тестовые балансы обновляются ежедневно.

Регистрация разработчика Смотреть API Reference