JavaScript клиентская библиотека (CDN SDK)

Клиентская JavaScript-библиотека для API Православного календаря, ориентированная на браузер.

Использование через CDN

<script src="https://api.ispovednik.org/cdn/orthodox-calendar-api.min.js"></script>
<script type="module">
  const client = OrthodoxCalendarApi.createClient({
    baseUrl: 'https://api.ispovednik.org/api/v1',
    defaultLang: 'ru',
  });

  async function run() {
    const res = await client.calendar.day('2027-06-19');
    console.log(res.data['2027-06-19']);
  }

  run().catch(console.error);
</script>

Создание клиента

type Lang = 'ru' | 'en';

type ClientOptions = {
  baseUrl?: string;          // по умолчанию: https://api.ispovednik.org/api/v1
  defaultLang?: Lang;        // по умолчанию: 'ru'
  defaultType?: number;      // опциональный фильтр типа святых
  timeoutMs?: number;        // по умолчанию: 15000
  fetchImpl?: typeof fetch;  // переопределение для тестов / SSR
  onRequest?: (ctx: { url: string; init: RequestInit }) => void;
  onResponse?: (ctx: { url: string; status: number }) => void;
  normalize?: boolean;       // по умолчанию: false (см. “Нормализация”)
  dedupe?: boolean;          // по умолчанию: true (дедупликация параллельных запросов)
  cacheTtlMs?: number;       // по умолчанию: 0 (выкл.)
  maxCacheEntries?: number;  // по умолчанию: 200
};

client = OrthodoxCalendarApi.createClient(options);

Все методы поддерживают:

type RequestOptions = {
  lang?: Lang;
  type?: number;        // только для эндпоинтов, где поддерживается
  signal?: AbortSignal;
  timeoutMs?: number;
  raw?: boolean;        // отключить нормализацию (если включена)
};

Покрытие эндпоинтов (v1)

Объекты дня календаря включают weekAfterPentecost как всегда присутствующее числовое поле.

Ошибки

SDK бросает ApiError:

Нормализация

По умолчанию SDK возвращает ответы “как есть”.

Если включить normalize: true, ответы /saints/* будут приведены к camelCase:

Можно использовать вспомогательную функцию напрямую:

const raw = await client.saints.day('2026-01-01', { raw: true });
const normalized = OrthodoxCalendarApi.normalizeSaintsEnvelope(raw);

Удобные вспомогательные функции

CalendarEvent.kind поддерживает значения: feast, event, saint, icon_of_mother_of_god, memorial, week.