TRACIO JavaScript SDK (@tracio/sdk) збирає сигнали браузера й надсилає їх до хмари TRACIO для ідентифікації відвідувачів і виявлення ботів. Він легкий, неблокувальний і сумісний з усіма сучасними браузерами.
npm install @tracio/sdkПакет постачається у збірках ESM, CJS та IIFE з повними типами TypeScript.
Є два способи використовувати TRACIO з CDN без бандлера.
Edge-скрипт ініціалізується автоматично, використовуючи публічний ключ у query-параметрі k. JavaScript не потрібен:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>Ви також можете завантажити опублікований npm-бандл з unpkg або jsDelivr. Він надає глобальний об'єкт TracioSDK. Зафіксуйте версію:
<script src="https://unpkg.com/@tracio/sdk@0.1.3/dist/index.min.js"></script><script> const tracio = TracioSDK.Tracio.init({ publicKey: "5ca175fc..." })</script>Ініціалізує SDK і синхронно повертає TracioInstance. Агент завантажується у фоновому режимі; методи екземпляра розв'язуються, щойно він готовий.
import { Tracio } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc...",})interface TracioConfig { publicKey: string // required region?: "us" | "eu" endpoint?: string scriptUrl?: string linkedId?: string tag?: string debug?: boolean timeoutMs?: number // default 15000}| Опція | Тип | Стандартно | Опис |
|---|---|---|---|
publicKey | string | обов'язково | Ваш публічний ключ. Скопіюйте його з вашої панелі керування. |
region | "us" | "eu" | немає | Необов'язковий регіон даних. Якщо не вказано, SDK використовує загальний ендпоінт https://edge.tracio.ai (без неявного зберігання даних у США). Встановіть його явно, щоб зафіксувати us або eu. |
endpoint | string | авто | Кастомний ендпоінт API (для ендпоінта, проксованого як first-party). |
scriptUrl | string | авто | Кастомна URL для скрипта агента (для ендпоінта, проксованого як first-party). |
linkedId | string | немає | Ідентифікатор, що пов'язує цього відвідувача із сутністю у вашій системі. |
tag | string | немає | Довільна мітка, що додається до запиту для подальшої фільтрації. |
debug | boolean | false | Виводить докладну діагностику в консоль. |
timeoutMs | number | 15000 | Скільки чекати на результат до спрацювання таймауту. |
Виклик Tracio.init() більш ніж один раз з іншим публічним ключем спричиняє помилку multiple_keys.
Повертає Promise<string>, який розв'язується до стабільного ідентифікатора відвідувача.
const visitorId = await tracio.getVisitorId()// "X7fh2Hg9LkMn3pQr"Повертає Promise<TracioResult> з ідентифікатором відвідувача та результатом виявлення ботів.
const result = await tracio.getResult()
console.log(result.visitorId)
if (result.bot.detected) { console.warn("bot, confidence:", result.bot.confidence)}interface TracioResult { visitorId: string bot: { detected: boolean confidence: number // 0-100 reasons?: string[] }}Викликається, щойно агент завантажився й видав результат.
tracio.onReady((result) => { console.log("ready:", result.visitorId)})Викликається, коли SDK стикається з помилкою.
tracio.onError((error) => { console.error("tracio error:", error.code, error.message)})Демонтує екземпляр і звільняє ресурси. Наступні виклики відхиляються з помилкою destroyed.
tracio.destroy()SDK викидає екземпляри TracioError із типізованим code. Використовуйте помічники isTracioError та isRetryableError для розгалуження:
import { Tracio, isTracioError, isRetryableError } from "@tracio/sdk"
const tracio = Tracio.init({ publicKey: "5ca175fc..." })
try { const result = await tracio.getResult()} catch (error) { if (isTracioError(error)) { if (isRetryableError(error)) { // load_failed / blocked / script_error / network / timeout / server — safe to retry } console.error("TRACIO error:", error.code, error.message) } else { console.error("Unexpected error:", error) }}Об'єднання TracioErrorCode охоплює:
| Код | Опис |
|---|---|
blocked | Запит було заблоковано (наприклад, блокувальником реклами). |
destroyed | Екземпляр було знищено до завершення виклику. |
invalid_config | Конфігурація недійсна (наприклад, відсутній publicKey). |
load_failed | Не вдалося завантажити скрипт агента. |
multiple_keys | Tracio.init() викликано із суперечливим публічним ключем. |
network | Мережевий запит завершився невдало. |
non_browser | SDK використано поза середовищем браузера. |
script_error | Скрипт агента спричинив помилку під час виконання. |
server | Сервер повернув помилку. |
timeout | Запит перевищив timeoutMs. |
load_failed, blocked, script_error, network, timeout та server можна повторювати; isRetryableError(error) повертає для них true.
Для React, Vue, Angular і Svelte використовуйте спеціальні пакети для фреймворків замість ручного під'єднання основного SDK:
Кожен з них обгортає @tracio/sdk і надає ідіоматичні примітиви (провайдери, плагіни, хуки, composables та сервіси). Сніпети для конкретних фреймворків дивіться в огляді SDK.
Tracio.init() повертається синхронно й завантажує агент у фоновому режимі. Він не блокує рендеринг сторінки.timeoutMs (стандартно 15000 мс), тож повільна мережа ніколи не заблокує ваш код на невизначений час.