@adpal/shared-lib

v1.1.0

Published

Shared utilities for AdPal projects: errors, logging, retry, validation

Readme

@adpal/shared-lib

Общие утилиты для проектов AdPal / Shared utilities for AdPal projects.

Установка / Installation

npm install @adpal/shared-lib

Для доступа к GitHub Packages:

npm login --registry=https://npm.pkg.github.com --scope=@adpal

Модули / Modules

Errors (Ошибки)

import { AppError, VoyageApiError, isAppError, wrapError } from '@adpal/shared-lib';

// Кастомная ошибка
throw new VoyageApiError('Rate limited', 429, { tokens: 1500 });

// Проверка типа
if (isAppError(error) && error.retryable) {
  // Можно повторить
}

Logger (Логирование)

import { Logger, createTimer } from '@adpal/shared-lib';

const log = new Logger('my-module');
const timer = createTimer();

log.info('Операция начата');
await doSomething();
log.info('Операция завершена', { durationMs: timer() });

Retry

import { withRetry, retryApiCall } from '@adpal/shared-lib';

// С полным контролем
const result = await withRetry(
  () => fetch('https://api.example.com'),
  { maxAttempts: 3, baseDelayMs: 1000 }
);

// Для API вызовов
const data = await retryApiCall(() => fetchFromVoyage());

Schemas (Zod валидация)

import {
  VoyageEmbeddingResponseSchema,
  safeParse
} from '@adpal/shared-lib';

const data = await response.json();
const parsed = safeParse(VoyageEmbeddingResponseSchema, data);
if (!parsed) throw new Error('Invalid response');

Разработка / Development

npm install
npm run build
npm test

Безопасность / Security

Этот пакет не содержит секретов. Все API ключи передаются через process.env в runtime.