Установка
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
| Параметр | Тип | Обязательный | Описание |
|---|
projectKey | string | ✓ | API Key проекта из настроек |
environment | string | — | Окружение (production, staging, development) |
release | string | — | Версия приложения, отображается в деталях ошибки |
Ручная отправка ошибок
Для ошибок в блоках 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 ошибки.
Breadcrumbs
SDK автоматически добавляет breadcrumbs для fetch и навигации. Можно добавлять свои:
import { addBreadcrumb } from '@mak_bool/sdk'
// Перед важным действием
addBreadcrumb({
type: 'user',
category: 'checkout',
message: 'Пользователь нажал "Оплатить"',
data: { cartTotal: 1490 },
})
Поля breadcrumb
| Поле | Тип | Описание |
|---|
type | string | Тип: http, navigation, user, default |
category | string | Подкатегория для фильтрации |
message | string | Текст события |
data | object | Дополнительные данные |
level | string | Уровень: 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.