TRACIO JavaScript SDK (@tracio/sdk) ब्राउज़र सिग्नल एकत्र करता है और उन्हें विज़िटर पहचान तथा बॉट डिटेक्शन के लिए TRACIO क्लाउड को भेजता है। यह हल्का, non-blocking और सभी आधुनिक ब्राउज़रों के साथ संगत है।
npm install @tracio/sdkयह पैकेज पूर्ण TypeScript टाइप्स के साथ ESM, CJS और IIFE बिल्ड प्रदान करता है।
बिना किसी bundler के CDN से TRACIO का उपयोग करने के दो तरीके हैं।
Edge स्क्रिप्ट k query parameter में मौजूद public key का उपयोग करके स्वचालित रूप से इनिशियलाइज़ हो जाती है। किसी JavaScript की आवश्यकता नहीं:
<script src="https://edge.tracio.ai/s.js?k=PUBLIC_KEY" async></script>आप प्रकाशित npm bundle को unpkg या jsDelivr से भी लोड कर सकते हैं। यह एक TracioSDK global उपलब्ध कराता है। किसी संस्करण को पिन करें:
<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 लौटाता है। एजेंट पृष्ठभूमि में लोड होता है; तैयार होते ही इंस्टेंस के methods resolve हो जाते हैं।
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 | आवश्यक | आपकी public key। इसे अपने dashboard से कॉपी करें। |
region | "us" | "eu" | कोई नहीं | वैकल्पिक data region। सेट न होने पर SDK सामान्य https://edge.tracio.ai endpoint का उपयोग करता है (कोई निहित US data residency नहीं)। us या eu तय करने के लिए इसे स्पष्ट रूप से सेट करें। |
endpoint | string | auto | कस्टम API endpoint (first-party-proxied endpoint के लिए)। |
scriptUrl | string | auto | एजेंट स्क्रिप्ट के लिए कस्टम URL (first-party-proxied endpoint के लिए)। |
linkedId | string | कोई नहीं | इस विज़िटर को आपके सिस्टम में किसी entity से जोड़ने वाला पहचानकर्ता। |
tag | string | कोई नहीं | बाद में फ़िल्टरिंग के लिए request से संलग्न किया गया स्वतंत्र-रूप वाला label। |
debug | boolean | false | कंसोल में विस्तृत डायग्नोस्टिक्स लॉग करता है। |
timeoutMs | number | 15000 | timeout होने से पहले परिणाम की कितनी देर प्रतीक्षा की जाए। |
Tracio.init() को किसी भिन्न public key के साथ एक से अधिक बार कॉल करने पर multiple_keys त्रुटि फेंकी जाती है।
एक Promise<string> लौटाता है जो स्थिर विज़िटर पहचानकर्ता में resolve होता है।
const visitorId = await tracio.getVisitorId()// "X7fh2Hg9LkMn3pQr"विज़िटर ID और बॉट डिटेक्शन परिणाम के साथ एक 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 एक typed code के साथ TracioError इंस्टेंस फेंकता है। शाखा बनाने के लिए isTracioError और isRetryableError helpers का उपयोग करें:
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 union में शामिल हैं:
| कोड | विवरण |
|---|---|
blocked | request को ब्लॉक कर दिया गया (उदा. किसी ad blocker द्वारा)। |
destroyed | कॉल पूरा होने से पहले इंस्टेंस को नष्ट कर दिया गया। |
invalid_config | कॉन्फ़िगरेशन अमान्य है (उदा. publicKey गायब है)। |
load_failed | एजेंट स्क्रिप्ट लोड होने में विफल रही। |
multiple_keys | Tracio.init() को विरोधाभासी public key के साथ कॉल किया गया। |
network | कोई network request विफल रही। |
non_browser | SDK का उपयोग ब्राउज़र वातावरण के बाहर किया गया। |
script_error | एजेंट स्क्रिप्ट ने रनटाइम पर त्रुटि उत्पन्न की। |
server | server ने एक त्रुटि लौटाई। |
timeout | request ने timeoutMs को पार कर दिया। |
load_failed, blocked, script_error, network, timeout और server retryable हैं; isRetryableError(error) इनके लिए true लौटाता है।
React, Vue, Angular और Svelte के लिए, core SDK को हाथ से जोड़ने के बजाय समर्पित framework पैकेजों का उपयोग करें:
प्रत्येक @tracio/sdk को wrap करता है और idiomatic primitives (providers, plugins, hooks, composables और services) उपलब्ध कराता है। प्रति-framework snippets के लिए SDKs अवलोकन देखें।
Tracio.init() सिंक्रोनस रूप से लौटता है और एजेंट को पृष्ठभूमि में लोड करता है। यह पेज रेंडरिंग को ब्लॉक नहीं करता।timeoutMs (डिफ़ॉल्ट 15000ms) द्वारा सीमित होती है, ताकि धीमा network आपके कोड को कभी भी अनिश्चित काल तक न रोके।