Skip to main content

Установка

npm install @mak_bool/sdk

Инициализация

Вызывайте init() один раз — как можно раньше, до любого другого кода.
import { init } from '@mak_bool/sdk'

init({
  projectKey: 'pk_live_ваш_ключ', // обязательно
  environment: 'production',       // опционально, по умолчанию 'production'
  release: '1.2.0',                // опционально, версия приложения
})
После инициализации SDK автоматически перехватывает:
  • Все необработанные исключения (window.onerror)
  • Все необработанные Promise rejection (unhandledrejection)
  • HTTP-запросы через fetch (для breadcrumbs)
  • Навигацию (pushState, popstate)

Параметры init

ПараметрТипОбязательныйОписание
projectKeystringAPI Key проекта из настроек
environmentstringОкружение (production, staging, development)
releasestringВерсия приложения, отображается в деталях ошибки

Ручная отправка ошибок

Для ошибок в блоках try/catch используйте captureError:
import { captureError } from '@mak_bool/sdk'

async function loadUserData(userId) {
  try {
    const data = await fetchUser(userId)
    return data
  } catch (err) {
    captureError(err, {
      userId,
      feature: 'user-profile',
    })
    throw err
  }
}
Второй аргумент — произвольный объект с контекстом. Он сохраняется в поле metadata ошибки. SDK автоматически добавляет breadcrumbs для fetch и навигации. Можно добавлять свои:
import { addBreadcrumb } from '@mak_bool/sdk'

// Перед важным действием
addBreadcrumb({
  type: 'user',
  category: 'checkout',
  message: 'Пользователь нажал "Оплатить"',
  data: { cartTotal: 1490 },
})

Поля breadcrumb

ПолеТипОписание
typestringТип: http, navigation, user, default
categorystringПодкатегория для фильтрации
messagestringТекст события
dataobjectДополнительные данные
levelstringУровень: info, warning, error
SDK хранит последние 50 breadcrumbs — они отправляются вместе с каждой ошибкой.

CommonJS

const { init, captureError } = require('@mak_bool/sdk/cjs')

init({ projectKey: 'pk_live_ваш_ключ' })

CDN (без сборщика)

<script src="https://makbool.ru/sdk.min.js"></script>
<script>
  MakboolSDK.init({
    projectKey: 'pk_live_ваш_ключ',
    environment: 'production',
  })
</script>

TypeScript

SDK поставляется с типами. Дополнительная настройка не требуется.
import { init, captureError, addBreadcrumb } from '@mak_bool/sdk'

init({
  projectKey: 'pk_live_ваш_ключ',
  environment: process.env.NODE_ENV as string,
  release: process.env.VITE_APP_VERSION,
})

Переменные окружения

Храните API Key в переменных окружения, не в коде:
VITE_MAKBOOL_KEY=pk_live_ваш_ключ
init({
  projectKey: import.meta.env.VITE_MAKBOOL_KEY,
})
Не коммитьте API Key в репозиторий. Используйте .env файлы и добавьте их в .gitignore.