@foxford/services
v2.0.0
Published
Foxford services
Readme
Сервисы Foxford
Библиотека фронтовых сервисов, которые помогут реализовать тот или иной функционал на уровне приложения.
HTTP API (ApiService)
HTTP-клиент для работы с API. Транспортный слой (axios) скрыт за публичным интерфейсом —
потребители пакета работают только с типами ApiInstance / ApiStatic из @foxford/services.
import { ApiService } from '@foxford/services'
import type { ApiInstance } from '@foxford/services'
// Клиент для внутренних API (с interceptors и retry)
const foxApi: ApiInstance = ApiService.createFoxApiInstance({
config: { baseURL: 'https://api.foxford.ru', timeout: 10_000 },
})
const response = await foxApi.get('/users/me')Подробнее: src/api/README.md
Captcha Service
Сервис для работы с капчей.
Представляет из себя фасад для работы с одним из провайдеров (Recaptcha, Cloudflare Turnstile, YandexSmartCaptcha).
Все капчи работают в режиме invisible.
type ProviderName = 'recaptcha' | 'cloudflare_turnstile' | 'yandex_smart_captcha'
type CaptchaConfig = {
locale?: string
sitekey?: string
provider?: ProviderName
notify?: (...args: any[]) => void // метод для нотификации юзера об ошибке
onRenderCaptcha?: (provider: ProviderName) => void // событие когда виджет капчи будет срендерен(не обязательно виден)
onSuccessChallenge?: (provider: ProviderName) => void // событие когда капча успешно решена(токен получен)
onErrorChallenge?: (provider: ProviderName, error: CaptchaError) => void // событие когда при решение произошла ошибка
onWarnChallenge?: (provider: ProviderName, error: CaptchaError) => void // событие когда при решении произошла не критичная ошибка
onBeforeInteractiveChallenge?: (provider: ProviderName) => void // событие когда invisible капча "поднимается" для юзера
onAfterInteractiveChallenge?: (provider: ProviderName) => void // событие когда открытая invisible капча решается юзером
}Пример использования
import { CaptchaService } from '@foxford/services'
const captcha = new CaptchaService({
locale: 'ru',
sitekey: 'KEY',
provider: 'yandex_smart_captcha',
})
async function submit() {
const token = await captcha.execute()
// {
// captcha_provider: 'yandex_smart_captcha',
// captcha_token: 'TOKEN',
// }
}