UNPKG

@asunalabs/tracker-sdk

Version:

React SDK for EngageTrack analytics and user tracking

80 lines (79 loc) 2.38 kB
export interface EngageTrackConfig { siteId: string; domain: string; } export interface TrackingData { [key: string]: any; } export interface EventData extends TrackingData { sessionId?: string; userId?: string; userAgent?: string; path?: string; referer?: string; title?: string; timeSpent?: number; timestamp?: string; } export interface ReferralData { timestamp: string; urlParams: Record<string, string>; source: ReferralSource | null; landingPage: string; userAgent: string; } export interface ReferralSource { source: string; domain: string; url: string; } export interface SessionData { sessionId: string; userId: string; startTime: number; lastActivity: number; isActive: boolean; timeSpent: number; } export interface WebSocketMessage { type: string; data?: any; siteId?: string; sessionId?: string; userId?: string; timestamp?: string; timeSpent?: number; [key: string]: any; } export interface OnlineUsersData { count: number; users: Array<{ userId: string; sessionId: string; lastSeen: string; }>; } export type EventType = "page_view" | "page_load" | "page_unload" | "page_hidden" | "user_click" | "idle_timeout" | "session_start" | "session_end" | "referral_conversion" | "referral_conversion_manual" | "custom_event"; export interface EngageTrackHooks { onTrackingEvent?: (eventType: EventType, data: EventData) => void; onSessionStart?: (sessionData: SessionData) => void; onSessionEnd?: (sessionData: SessionData) => void; onWebSocketConnect?: () => void; onWebSocketDisconnect?: () => void; onWebSocketMessage?: (message: WebSocketMessage) => void; onOnlineUsersUpdate?: (data: OnlineUsersData) => void; onReferralConversion?: (referralData: ReferralData) => void; onError?: (error: Error) => void; } export interface EngageTrackContextType { config: EngageTrackConfig; isInitialized: boolean; sessionData: SessionData | null; onlineUsers: OnlineUsersData | null; track: (eventType: EventType, data?: TrackingData) => void; trackReferralConversion: (data?: TrackingData) => void; getSessionData: () => SessionData | null; getReferralData: () => ReferralData | null; isConnected: boolean; reconnect: () => void; }